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?

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.


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

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 "^$" "*"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.