파일 유형(MIME 유형) text/html이지만 다른 파일은 아닌 모든 응답에 두 개의 추가 HTTP 헤더를 추가하고 싶습니다.
현재 헤더(편집됨):
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에서, 하지만 답을 찾을 수 없는 것 같습니다.
이것은 제가 시도한 것 중 가장 논리적으로 보이는 것 중 하나입니다. 현재 헤더를 확인하세요. 결과가 true이면 추가 헤더를 추가하십시오.
<If "%{HTTP:Content-Type} in { 'text/html' }">
Header set Header1 test
Header set Header2 test
</If>
하지만 이 ENV가 요청 또는 응답 헤더에서 가져온 것인지는 알 수 없습니다.
이를 달성하는 방법을 아는 사람이 있습니까? MIME 유형을 기반으로 응답에 사용자 정의 HTTP 헤더를 추가합니까?
감사해요.
답변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이 설정되지 않아 작동하지 않는 경우 REQUEST_URI에 저장된 확장과 같이 일치해야 합니다.
답변2
모두 감사합니다. 이것은 실제로 저에게 효과적이었습니다(명령 끝에 조건 추가 Header Set
).
Header always set X-TEST VALUE-XYZ "expr=%{CONTENT_TYPE} == 'text/html; charset=UTF-8'"
나는 이것이 없이도 작동해야 한다고 생각하지만 always
아직 시도하지 않았습니다.