404 प्रतिक्रियाओं के लिए Nginx पर क्रॉस मूल अनुरोध (कोर) की अनुमति


26

मैं इस प्रश्न में उल्लिखित तकनीक का उपयोग करके कोरस अनुरोधों के जवाब में स्थिर फ़ाइलों की सेवा करने के लिए Nginx का उपयोग कर रहा हूं । हालाँकि, जब फ़ाइल मौजूद नहीं है 404 प्रतिक्रिया में Access-Control-Allow-Origin: *हेडर नहीं है और इसलिए ब्राउज़र द्वारा ब्लॉक किया गया है।

मैं Access-Control-Allow-Origin: *404 प्रतिक्रियाओं पर कैसे भेज सकता हूं ?

जवाबों:


35

भले ही यह बहुत पहले पूछा गया था, मैं अधिक मॉड्यूल के साथ नंगेक्स को संकलित कर रहा था, लेकिन नगीनेक्स के नए संस्करण के साथ, मैंने पाया कि मुझे नगीने को कस्टम करने की ज़रूरत नहीं है, मुझे केवल alwaysनिर्देश जोड़ने की ज़रूरत थी ।

http://nginx.org/en/docs/http/ngx_http_headers_module.html

Syntax: add_header name value [always];

यदि हमेशा पैरामीटर निर्दिष्ट किया जाता है (1.7.5), हेडर फ़ील्ड को प्रतिक्रिया कोड की परवाह किए बिना जोड़ा जाएगा।

तो कोर हेडर का एक ट्यून संस्करण :

            if ($cors = "trueget") {
                    # Tells the browser this origin may make cross-origin requests
                    # (Here, we echo the requesting origin, which matched the whitelist.)
                    add_header 'Access-Control-Allow-Origin' "$http_origin" always;

                    # Tells the browser it may show the response, when XmlHttpRequest.withCredentials=true.
                    add_header 'Access-Control-Allow-Credentials' 'true' always;
            }

2
alwaysकुंजी थी। मुझे यह इंगित करने के लिए धन्यवाद, मैं पागल हो रहा था!
१४:१६ में bgondy

11

मैं मान रहा हूं कि आप वर्तमान में add_headerनिर्देशन का उपयोग कर रहे हैं । प्रलेखन नोट करता है कि यह केवल हेडर को 200, 204, 301, 302 और 304 स्थिति कोड के लिए सेट करता है। हेडर को 404 स्टेटस कोड के लिए सेट करने के लिए आपको हेडर_मोर मॉड्यूल more_set_headersसे निर्देश का उपयोग करना होगा (आपको इस मॉड्यूल को प्राप्त करने के लिए nginx को फिर से शुरू करने की आवश्यकता हो सकती है)। निम्नलिखित सभी स्टेटस कोड के लिए हेडर सेट करेगा:

more_set_headers 'Access-Control-Allow-Origin: *';

आप इसे विशिष्ट स्थिति कोड तक भी सीमित कर सकते हैं:

more_set_headers -s '404' 'Access-Control-Allow-Origin: *';
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.