Ustaw nagłówek w Apache, jeśli jeszcze nie istnieje

13

Mam serwer proxy, który wstrzykuje niektóre nagłówki, ale chcę go zmodyfikować, aby ustawiał nagłówki tylko wtedy, gdy nie są jeszcze obecne:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

czy to możliwe?

Hobozilla
źródło

Odpowiedzi:

5

W Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Przekonałem się, że to działa

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

działa przez cały dzień. Jeśli jednak spróbujemy użyć wartości dynamicznej,

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

nie działa. Odkryłem, że potrzebujesz pomocy mod_rewrite, aby zebrać wartość. Moja konfiguracja wygląda teraz tak i działa.

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

Wiem, że jest głupi, ale działa.

Mauro Marzorati
źródło
7

Co powiesz na coś takiego:

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

Skonsultować http://httpd.apache.org/docs/current/expr.html uzyskać więcej informacji na temat expr = składni.

Edycja: W Apache 2.2 powinieneś być w stanie to zrobić:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header
MLu
źródło
Wydaje mi się, że mam z tym pewne problemy w Apache 2.2.24. Czy to tylko kwestia 2.4?
Hobozilla
Nie wydaje się istnieć w Apache 2.2.
Michael Hampton
Zobacz moje zmiany powyżej dla Apache 2.2.
MLu
2
Z jakiegoś powodu nie lubi „” jako wyrażenia regularnego, ale ^ $ wydaje się działać.
Hobozilla
4

Apache 2.4.7

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

Apache 2.2.4 poniżej

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
Kangur
źródło