ตั้งส่วนหัวใน 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')==''"

ดูhttp://httpd.apache.org/docs/current/expr.htmlสำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ expr =

แก้ไข:ใน 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 หรือไม่?
Hobozilla

ไม่ปรากฏว่ามีอยู่ใน Apache 2.2
Michael Hampton

ดูการแก้ไขข้างต้นสำหรับ 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.