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.