web-dev-qa-db-ja.com

存在しない場合は、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>

これは可能ですか?

13
Hobozilla

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"

私はそれが愚かであることを知っていますが、それは機能します。

5
Mauro Marzorati

次のようなものはどうですか:

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
7
MLu

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 "^$" "*"
4
Kangur