在Apache中设置标题,如果它不存在

我有一个代理注入一些头,但我想修改它,所以它只设置头,如果他们不存在:

<Location /api> RequestHeader set MY_HEADER "value" ProxyPass http://127.0.0.1:8000/api ProxypassReverse http://127.0.0.1:8000/api </Location> 

这可能吗?

在Apache 2.4.7,x86_64,Ubuntu 14.04 LTS中

我发现这个工作

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

整天工作。 但是,如果试图使用dynamic值,

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

不起作用。 我发现你需要mod_rewrite的帮助来收获价值。 我的configuration现在看起来像这样,它的工作原理。

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

我知道这是stoopid,但它的作品。

感觉如何?

 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.4.7

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

下面的Apache 2.2.4

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