Establecer encabezado en apache si aún no existe

13

Tengo un proxy que está inyectando algunos encabezados pero quiero modificarlo para que solo configure los encabezados si aún no están presentes:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

es posible?

Hobozilla
fuente

Respuestas:

5

En Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

He encontrado que esto funciona

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

funciona todo el día Sin embargo, si uno intenta usar un valor dinámico,

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

No funciona. He descubierto que necesita la ayuda de mod_rewrite para cosechar el valor. Mi configuración ahora se ve así, y funciona.

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

Sé que es stoopid, pero funciona.

Mauro Marzorati
fuente
7

¿Qué tal algo como:

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

Consulte http://httpd.apache.org/docs/current/expr.html para obtener más información sobre la sintaxis expr =.

Editar: en Apache 2.2 deberías poder hacer esto:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header
MLu
fuente
Parece que tengo algunos problemas con eso en apache 2.2.24. ¿Es solo una cosa 2.4?
Hobozilla
No parece existir en Apache 2.2.
Michael Hampton
Vea mis ediciones arriba para Apache 2.2.
MLu
2
Por alguna razón, no le gusta "" como expresión regular, pero ^ $ parecía funcionar.
Hobozilla
4

Apache 2.4.7

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

Apache 2.2.4 a continuación

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