2015-09-01 4 views
14

पर पहुंच-नियंत्रण-अनुमति-उत्पत्ति गायब है मैं क्लाउडफ्रंट सीडीएन के माध्यम से सर्वर की संपत्तियों पर एक वेब एप्लिकेशन (कोणीय + रेल) ​​पर काम कर रहा हूं। एप्लिकेशन को सेवा दी जाती है हालांकि nginx जो "एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिन" हेडर सेट करने के लिए सही तरीके से सेट अप किया गया है। हेडर को अग्रेषित करने के लिए क्लाउडफ्रंट सेट अप किया गया है।पहली प्रतिक्रिया

समस्या यह है कि एक कोणीय टेम्पलेट के लिए पहली प्रतिक्रिया पर हेडर गुम है, लेकिन यह बाद के प्रतिक्रियाओं पर सही ढंग से मौजूद है (यदि मैं पृष्ठ को रीफ्रेश करता हूं)।

उदाहरण के लिए, यदि मैं क्रोम में सभी इतिहास और कैश साफ़ करता हूं और पृष्ठ पर जाता हूं, तो टेम्पलेट फ़ाइल के लिए प्रतिक्रिया में "एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिन" हेडर नहीं होगा। यदि मैं पृष्ठ को रीफ्रेश करता हूं, तो टेम्पलेट के लिए प्रतिक्रिया में हेडर होगा।

मैंने देखा कि यदि मैं सभी इतिहास और कैश साफ़ करता हूं, लेकिन कुकीज़ नहीं, तो यह सही तरीके से काम करता रहता है।

यह फ़ायरफ़ॉक्स पर समान व्यवहार करता है। यदि मैं सभी इतिहास और कैश साफ़ करता हूं तो यह पहली प्रतिक्रिया पर काम नहीं करता है, लेकिन यह बाद के प्रतिक्रियाओं पर सही ढंग से काम करता है। सभी इतिहास और कैश को साफ़ करने के बाद, लेकिन कुकीज़ के बिना, यह क्रोम के विपरीत, सही ढंग से काम करना जारी रखता है।

इसके अलावा, अगर मैं फ़ायरफ़ॉक्स में विकास उपकरण खोलता हूं और कैश अक्षम करता हूं, तो प्रत्येक प्रतिक्रिया पर हेडर गुम है।

क्या आप जानते हैं कि समस्या क्या हो सकती है या मुझे आगे कहां देखना चाहिए?

धन्यवाद।

+0

कोर अनुरोधों के लिए JSONP को आजमाएं –

+2

पहला क्रॉस डोमेन अनुरोध विकल्प है, सर्वर हेडर शेड रिटर्न एक्सेस-कंट्रोल-अनुमति-विधि: पोस्ट, प्राप्त करें, ** विकल्प ** –

+0

आप वास्तव में किस समस्या का सामना कर रहे हैं? प्रत्येक अनुरोध के लिए, एक विकल्प अनुरोध पहले किया जाता है, यदि यह सफल होता है, तो वास्तविक अनुरोध किया जाता है। क्या आपको समस्या का सामना करना पड़ रहा है या किसी अन्य अनुरोध में? क्या यह आपके आवेदन को प्रभावित कर रहा है? –

उत्तर

6

"एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनल" एक प्रतिक्रिया हेडर है, अनुरोध हेडर नहीं। जब HTTP क्लाइंट एक विकल्प विधि के साथ अनुरोध भेजता है तो यह HTTP सर्वर द्वारा वापस किया जाता है। उदाहरण के लिए, ब्राउज़र में AJAX API एक POST अनुरोध करने से पहले एक विकल्प अनुरोध भेजता है जब लक्षित यूआरएल वर्तमान पृष्ठ यूआरएल नहीं है (क्रॉस ओरिजिनल रिसोर्स शेयरिंग इश्यू देखें)। इस विकल्प अनुरोध में "उत्पत्ति" शीर्षलेख है जिसमें वर्तमान पृष्ठ यूआरएल (योजना + डोमेन) से शुरू होता है। अजाक्स एपीआई केवल POST अनुरोध भेजेगा यदि प्रतिक्रिया में मुख्य पृष्ठ से मेल खाने वाले यूआरएल के साथ "एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनल" हेडर होता है।

यदि आप वर्तमान पृष्ठ की सेवा करने वाले किसी अन्य सर्वर से गतिशील सामग्री तक पहुंचना चाहते हैं तो आपको केवल ऐसे शीर्षकों के बारे में चिंता करने की आवश्यकता है। यह आपका मामला यहां प्रतीत नहीं होता है।

CORS बारे में अधिक जानकारी के लिए, इस विकिपीडिया पृष्ठ देखें: अगर कोई भी AngularJS टैग है https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

+0

के बारे में अधिक जानकारी का उपयोग कर सकते हैं अंत में मैंने कोणीय के साथ इनलाइन टेम्पलेट्स का उपयोग करके इस समस्या का समाधान किया, क्योंकि मैंने देखा कि अधिकांश डेवलपर्स ऐसा करना पसंद करते हैं। हालांकि, यह जवाब सीओआरएस के बारे में अधिक जानने में सबसे उपयोगी था। – Strika

0

, मुझे आप एचटीएमएल टेम्पलेट्स लोड लेकिन उन सब html2js साथ (उदाहरण के लिए एक जे एस फ़ाइल में संकलित करने के लिए नहीं का सुझाव देने दें गंट प्लगइन)

संबंधित मुद्दे