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?

Hobozilla
quelle

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.

Mauro Marzorati
quelle
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
MLu
quelle
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 "^$" "*"
Kangur
quelle