Imposta l'intestazione in apache se non esiste già


13

Ho un proxy che sta iniettando alcune intestazioni ma voglio modificarlo in modo da impostare le intestazioni solo se non sono già presenti:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

È possibile?

Risposte:


5

In Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Ho scoperto che funziona

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

funziona tutto il giorno. Tuttavia, se si tenta di utilizzare un valore dinamico,

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

non funziona. Ho scoperto che hai bisogno dell'aiuto di mod_rewrite per raccogliere il valore. La mia configurazione ora è simile a questa e funziona.

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

So che è stupido, ma funziona.


7

Che ne dici di qualcosa come:

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

Consultare http://httpd.apache.org/docs/current/expr.html per ulteriori informazioni sulla sintassi expr =.

Modifica: in Apache 2.2 dovresti essere in grado di fare questo:

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

Mi sembra di avere dei problemi con questo in Apache 2.2.24. È solo una cosa 2.4?
Hobozilla,

Non sembra esistere in Apache 2.2.
Michael Hampton

Vedi le mie modifiche sopra per Apache 2.2.
MLu,

2
Per qualche ragione non gli piace "" come espressione regolare ma ^ $ sembra fare il trucco.
Hobozilla,

4

Apache 2.4.7

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

Apache 2.2.4 di seguito

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.