Setzt den Header in Apache, falls er noch nicht existiert


13

Ich habe einen Proxy, der einige Header einfügt, aber ich möchte ihn so ändern, dass er die Header nur setzt, wenn sie noch nicht vorhanden sind:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

Ist das möglich?

Antworten:


5

In Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Ich habe festgestellt, dass dies funktioniert

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

arbeitet den ganzen Tag. Wenn man jedoch versucht, einen dynamischen Wert zu verwenden,

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

funktioniert nicht. Ich habe festgestellt, dass Sie die Hilfe von mod_rewrite benötigen, um den Wert zu ernten. Meine Konfiguration sieht jetzt so aus und es funktioniert.

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

Ich weiß, dass es doof ist, aber es funktioniert.


7

Wie wäre es mit so etwas wie:

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

Consult http://httpd.apache.org/docs/current/expr.html für weitere Informationen über die ausdr = Syntax.

Bearbeiten: In Apache 2.2 sollten Sie in der Lage sein, dies zu tun:

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

Ich habe anscheinend einige Probleme damit in Apache 2.2.24. Ist es nur eine 2.4 Sache?
Hobozilla

Scheint in Apache 2.2 nicht zu existieren.
Michael Hampton

Siehe meine Änderungen oben für Apache 2.2.
MLu

2
Aus irgendeinem Grund mag es nicht "" als regulären Ausdruck, aber ^ $ schien den Trick zu tun.
Hobozilla

3

Apache 2.4.7

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

Apache 2.2.4 unten

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.