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

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

<Location /api>
    RequestHeader set MY_HEADER "value"

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

이게 가능해?



답변

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"

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


답변

어때요?

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.4.7

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

아파치 2.2.4 이하

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"


답변