2015-07-09 5 views
6

यह post को SO में एक समान प्रश्न है। लेकिन यहां प्रदान किया गया उत्तर मेरे मामले में लागू नहीं किया जा सकता क्योंकि मैं सर्वर से प्रतिक्रिया शीर्षलेख नहीं बदल सकता।

मान लीजिए कि एक अलग मूल पर एक http POST है। यह सीओआरएस प्रीफलाइट एक्सचेंज सहित सीओआरएस का तात्पर्य है। अब मान लें कि विकल्प समस्या के कारण OPTIONS अनुरोध 503 service unavailable त्रुटि देता है। इस मामले में त्रुटि हैंडलर मुझे स्थिति कोड 503 और पाठ: service not available देने के बजाय डेटा के लिए "" और स्थिति के लिए 0 देता है। इस परिदृश्य का एक उदाहरण नीचे दी गई छवि में चित्रित किया गया है।

enter image description here

enter image description here

मैं उपयोग कर रहा हूँ AngularJS $ http और मुझे पता है के जवाब में कोई CORS हेडर देखते हैं अगर ऐसी त्रुटियों happen.and मैं इसे बदल नहीं सकते।

क्या कोई तरीका है कि मैं उचित अस्वीकृति वस्तु और मेरे अस्वीकृति वस्तु में पाठ प्राप्त कर सकता हूं।

+0

मैं स्पष्ट पूछ रहा हूं, लेकिन यदि आप सर्वर को नहीं बदल सकते हैं और आपको पता है कि इसमें सीओआरएस हेडर नहीं हैं, तो आप पहले स्थान पर क्रॉस साइट अनुरोध क्यों करने का प्रयास करेंगे? – Claies

+0

@Claies आपके समय के लिए धन्यवाद! सर्वर सभी सफल अनुरोधों के लिए सीओआरएस हेडर भेजता है। लेकिन जब '503-सेवा अनुपलब्ध 'जैसी त्रुटि होती है तो यह केवल सीओआरएस हेडर नहीं भेजता है जिन पर मेरा नियंत्रण नहीं है। –

+0

हम्म मुझे पहले कभी इस तरह की समस्या का सामना नहीं हुआ है, लेकिन मैं इस पर थोड़ा सा शोध करूँगा और देख सकता हूं कि मैं क्या खोद सकता हूं। – Claies

उत्तर

9

यह एंगुलरजेएस/$ http का मुद्दा नहीं है लेकिन यह ब्राउज़र और उनके XMLHttpRequest ऑब्जेक्ट का व्यवहार है: यदि CORS अनुरोध विफल रहता है, तो ब्राउज़र कॉलर को कोई जानकारी नहीं देता है।

मुझे यह समझने से पहले, हालांकि यह एक कोणीय जेएस मुद्दा भी है और मैंने इसी टिप्पणी के साथ कोणीय -> के जिथब पर एक खुली समस्या उठाई है।

https://github.com/angular/angular.js/issues/13085#issuecomment-148047721

तो मुझे लगता है कि इस समस्या के समाधान के रूप में 503.

संपादित करने के मामले में प्रॉक्सी/लोड संतुलन पर भी Access-Control-Allow-Origin प्रतिक्रिया हेडर को जोड़ने के लिए कोई दूसरा रास्ता नहीं लगता है: यदि आपका लोड बैलेंसर एक हैप्रोक्सी है, निम्नलिखित आपको भी मदद कर सकता है:
HAproxy: different 503 errorfile for OPTIONS and POST methods
यह दिखाता है कि एचओआरएक्सएक्स एवर को सीओआरएस अनुरोध स्वायत्त कैसे दें।

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