아파치에 헤더가 없으면 설정하십시오.


13

헤더를 주입하는 프록시가 있지만 헤더가 아직없는 경우에만 헤더를 설정하도록 수정하고 싶습니다.

<Location /api>    
    RequestHeader set MY_HEADER "value"

    ProxyPass http://127.0.0.1:8000/api
    ProxypassReverse http://127.0.0.1:8000/api
</Location>

이게 가능해?

답변:


5

Apache 2.4.7, x86_64, Ubuntu 14.04 LTS에서

나는 이것이 작동한다는 것을 발견했다

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

하루 종일 작동합니다. 그러나 동적 값을 사용하려고하면

RequestHeader setIfEmpty X-Forwarded-For "%{REMOTE_ADDR}e"

작동하지 않습니다. 값을 얻으려면 mod_rewrite의 도움이 필요하다는 것을 알았습니다. 내 구성은 이제 다음과 같으며 작동합니다.

RewriteRule . - [E=noxff:%{REMOTE_ADDR}] RequestHeader setIfEmpty X-Forwarded-For "%{noxff}e"

나는 그것이 바보라는 것을 알고 있지만 효과가 있습니다.


7

어때요?

RequestHeader set X-My-Header "value" expr="req('X-My-Header')==''"

expr = 구문에 대한 자세한 정보는 http://httpd.apache.org/docs/current/expr.html 을 참조 하십시오 .

편집 : Apache 2.2에서는 다음을 수행 할 수 있어야합니다.

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header

아파치 2.2.24에서 그 문제가있는 것 같습니다. 그냥 2.4입니까?
호보 질라

Apache 2.2에 존재하지 않는 것 같습니다.
Michael Hampton

Apache 2.2에 대한 위의 편집 내용을 참조하십시오.
MLu

2
어떤 이유로 ""를 정규 표현식으로 좋아하지 않지만 ^ $는 트릭을 수행하는 것 같습니다.
호보 질라

4

아파치 2.4.7

Header setifempty Access-Control-Allow-Origin "*"

아파치 2.2.4 이하

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.