Я хотел бы добавить два дополнительных HTTP-заголовка ко всем ответам, которые относятся к типу файла (типу MIME) text / html, но не к другим файлам.
Текущие заголовки (отредактированы):
curl -I https://www......
HTTP/1.1 200 OK
Date: Fri, 23 Feb 2018 20:43:15 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache
Vary: Content-Type,Accept-Encoding
X-Frame-Options: SAMEORIGIN
Connection: keep-alive
Content-Type: text/html; charset=UTF-8
Content-Language: de-DE
В <If>
заявление, которое я пробовал, не работает (моя идея заключалась в том, чтобы проверить text/html
, и если это установлено, то также добавьте два дополнительных заголовка с Header set
.
Я проверил несколько источников, например здесь, на apache.org, но не могу найти ответа.
Это одна из вещей, которые я пробовал, и она кажется мне наиболее логичной. Проверьте текущий заголовок; если результат верен, добавьте дополнительные заголовки.
<If "%{HTTP:Content-Type} in { 'text/html' }">
Header set Header1 test
Header set Header2 test
</If>
Но я не знаю, взят ли этот ENV из заголовка запроса или ответа.
Кто-нибудь знает, как этого добиться - добавить в ответ собственный HTTP-заголовок на основе типа mime?
Спасибо.
Вероятно, вам нужно будет сопоставить что-то еще, кроме типа содержимого, потому что он, вероятно, будет установлен позже и, следовательно, недоступен там.
Документация на https://httpd.apache.org/docs/2.4/expr.html объясняет вашу проблему:
CONTENT_TYPE The content type of the response (not available during <If >)
Я бы попробовал делать что-то только с mod_headers
модуль. Посмотрите примеры здесь: https://httpd.apache.org/docs/2.4/mod/mod_headers.html
Поэтому я бы предложил что-то вроде:
Header always set Header1 Value1 "expr=%{CONTENT_TYPE} == text/html"
Если это не сработает, потому что CONTENT_TYPE не установлен, вам нужно будет сопоставить, как в расширении, хранящемся в REQUEST_URI.
Спасибо всем, это действительно сработало для меня (добавление условия в конце Header Set
команда):
Header always set X-TEST VALUE-XYZ "expr=%{CONTENT_TYPE} == 'text/html; charset=UTF-8'"
Я думаю, это тоже должно работать без always
, еще не пробовал.