如果不存在,请在apache中设置标头


13

我有一个注入一些标头的代理,但是我想对其进行修改,以便仅在标头不存在的情况下才设置标头:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

这可能吗?

Answers:


5

在Apache 2.4.7,x86_64,Ubuntu 14.04 LTS中

我发现这可行

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

全天工作。但是,如果尝试使用动态值,

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

不起作用。我发现您需要mod_rewrite的帮助来收获价值。我的配置现在看起来像这样,并且可以正常工作。

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

我知道它是愚蠢的,但是可以。


7

怎么样:

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

有关expr =语法的更多信息,请参阅http://httpd.apache.org/docs/current/expr.html

编辑:在Apache 2.2中,您应该能够做到这一点:

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

我在Apache 2.2.24中似乎遇到了一些问题。只是2.4件事吗?
Hobozilla

在Apache 2.2中似乎不存在。
迈克尔·汉普顿

请参阅我上面对Apache 2.2的编辑。
MLu

2
由于某种原因,它不喜欢将“”作为正则表达式,但是^ $似乎可以解决问题。
Hobozilla

4

阿帕奇2.4.7

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

以下的Apache 2.2.4

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.