Đặt tiêu đề trong apache nếu nó không tồn tại


13

Tôi có một proxy đang tiêm một số tiêu đề nhưng tôi muốn sửa đổi nó để nó chỉ đặt các tiêu đề nếu chúng chưa có mặt:

<Location /api>    
    RequestHeader set MY_HEADER "value"

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

Điều này có thể không?

Câu trả lời:


5

Trong Apache 2.4.7, x86_64, Ubuntu 14.04 LTS

Tôi đã thấy rằng điều này làm việc

RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"

làm việc cả ngày Tuy nhiên, nếu người ta cố gắng sử dụng một giá trị động,

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

không hoạt động. Tôi đã thấy rằng bạn cần sự giúp đỡ của mod_rewrite để thu hoạch giá trị. Cấu hình của tôi bây giờ trông như thế này, và nó hoạt động.

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

Tôi biết nó là ngu ngốc, nhưng nó hoạt động.


7

Làm thế nào về một cái gì đó như:

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

Tham khảo http://httpd.apache.org/docs/civerse/expr.html để biết thêm thông tin về cú pháp expr =.

Chỉnh sửa: Trong Apache 2.2, bạn sẽ có thể làm điều này:

SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header

Tôi dường như có một số vấn đề với điều đó trong apache 2.2.24. Có phải nó chỉ là một điều 2,4?
Hobozilla

Dường như không tồn tại trong Apache 2.2.
Michael Hampton

Xem các chỉnh sửa của tôi ở trên cho Apache 2.2.
MLu

2
Vì một số lý do, nó không giống như "" như một biểu thức thông thường nhưng ^ $ dường như thực hiện mánh khóe.
Hobozilla

4

Apache 2.4.7

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

Apache 2.2.4 dưới đây

Header append Access-Control-Allow-Origin ""
Header edit Access-Control-Allow-Origin "^$" "*"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.