Setel tajuk di apache jika belum ada

13

Saya memiliki proxy yang menyuntikkan beberapa header tetapi saya ingin memodifikasinya sehingga hanya menetapkan header jika belum ada:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

Apakah ini mungkin?

Hobozilla
sumber

Jawaban:

5

Di Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Saya telah menemukan bahwa ini berfungsi

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

bekerja sepanjang hari. Namun jika seseorang mencoba menggunakan nilai dinamis,

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

tidak bekerja. Saya telah menemukan bahwa Anda memerlukan bantuan mod_rewrite untuk memanen nilainya. Konfigurasi saya sekarang terlihat seperti ini, dan itu berfungsi.

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

Saya tahu itu bungkuk, tetapi berhasil.

Mauro Marzorati
sumber
7

Bagaimana dengan sesuatu seperti:

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

Konsultasikan http://httpd.apache.org/docs/current/expr.html untuk info lebih lanjut tentang expr = sintaks.

Sunting: Di Apache 2.2 Anda harus dapat melakukan ini:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header
MLu
sumber
Saya tampaknya mengalami beberapa masalah dengan itu di apache 2.2.24. Apakah itu hanya 2,4 hal?
Hobozilla
Tampaknya tidak ada di Apache 2.2.
Michael Hampton
Lihat hasil edit saya di atas untuk Apache 2.2.
MLu
2
Untuk beberapa alasan itu tidak suka "" sebagai ekspresi reguler tetapi ^ $ sepertinya melakukan trik.
Hobozilla
4

Apache 2.4.7

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

Apache 2.2.4 di bawah ini

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