यदि यह पहले से मौजूद नहीं है तो अपाचे में हेडर सेट करें


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 से परामर्श करें ।

संपादित करें: Apache 2.2 में आपको यह करने में सक्षम होना चाहिए:

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

मुझे लगता है कि अपाचे 2.2.24 में कुछ समस्याएं हैं। क्या यह सिर्फ 2.4 की बात है?
होबोजिला

अपाचे 2.2 में मौजूद नहीं है।
माइकल हैम्पटन

Apache 2.2 के लिए ऊपर मेरे संपादन देखें।
MLU

2
किसी कारण से यह एक नियमित अभिव्यक्ति के रूप में "" पसंद नहीं करता है लेकिन ^ $ चाल करने के लिए लग रहा था।
होबोजिला

4

अपाचे 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 "^$" "*"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.