Definir cabeçalho no apache se ele ainda não existir

13

Eu tenho um proxy que está injetando alguns cabeçalhos, mas quero modificá-lo para que ele apenas defina os cabeçalhos se eles ainda não estiverem 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>

Isso é possível?

Hobozilla
fonte

Respostas:

5

No Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Eu descobri que isso funciona

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

funciona o dia inteiro. No entanto, se alguém tentar usar um valor dinâmico,

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

não funciona. Descobri que você precisa da ajuda de mod_rewrite para colher o valor. Minha configuração agora se parece com isso e funciona.

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

Eu sei que é estúpido, mas funciona.

Mauro Marzorati
fonte
7

Que tal algo como:

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

Consulte http://httpd.apache.org/docs/current/expr.html para obter mais informações sobre a sintaxe expr =.

Edit: No Apache 2.2, você deve conseguir fazer isso:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header
MLu
fonte
Parece que estou tendo alguns problemas com isso no apache 2.2.24. É apenas uma coisa 2.4?
Hobozilla
Não parece existir no Apache 2.2.
Michael Hampton
Veja minhas edições acima para o Apache 2.2.
MLU
2
Por alguma razão, ele não "" gosta de uma expressão regular, mas ^ $ parece ter funcionado.
Hobozilla
4

Apache 2.4.7

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

Apache 2.2.4 abaixo

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