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?

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.


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

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 "^$" "*"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.