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>

これは可能ですか?

回答:


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だけですか?
ホボジラ

Apache 2.2には存在しないようです。
マイケルハンプトン

上記のApache 2.2の編集を参照してください。
MLu

2
何らかの理由で、正規表現としての ""は好きではありませんが、^ $がトリックを行っているようです。
-Hobozilla

4

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 "^$" "*"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.