Я хотел бы добавить два дополнительных заголовка 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-типа?
Спасибо.
решение1
Вероятно, вам придется сопоставлять что-то другое, а не тип контента, поскольку он, вероятно, будет установлен позже и, следовательно, недоступен там.
Документация на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 не задан, вам нужно будет сопоставить like с расширением, сохраненным в REQUEST_URI.
решение2
Спасибо всем, это действительно сработало для меня (добавление условия в конце команды Header Set
):
Header always set X-TEST VALUE-XYZ "expr=%{CONTENT_TYPE} == 'text/html; charset=UTF-8'"
Я думаю, что это также должно работать и без always
, но пока не пробовал.