2017-01-25 13 views
6

मैं अपने स्थानीय webservice को एक GET अनुरोध कर रहा हूं, जिसे मैं शीर्षलेख में किसी स्थान के साथ 302 प्रतिक्रिया वापस करने की उम्मीद कर रहा हूं। हालांकि, मुझे एक अपरिभाषित प्रतिक्रिया वापस मिलती है और एक नेटवर्क त्रुटि होती है, भले ही मैं स्थानीय रूप से देख सकूं कि अनुरोध परोसा जा रहा है और webservice में किसी भी त्रुटि के बिना प्रतिक्रिया बनाई जा रही है।302 प्रतिक्रिया त्रुटि

मैंने पोस्टमैन और क्रोम में कोशिश की है, और इसे रीडायरेक्ट प्रतिक्रिया प्राप्त होती है और तदनुसार रीडायरेक्ट होती है।

मुझे यकीन नहीं है कि यह एक कॉरस समस्या है और यदि हां, तो मैं इसे कैसे हल कर सकता हूं?

मैं पहले से ही CORS के लिए प्रतिक्रिया हेडर में जोड़ दिया है फ़िल्टर कर

Access-Control-Expose-Headers: Location, [own headers] 
Access-Control-Allow-Origin: '*' 
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS, DELETE 
Access-Control-Max-Age: [some age] 
Access-Control-Allow-Headers: [own headers] 

और स्थान हेडर में मौजूद है जब मैं डाकिया

अनुरोध मैं Axios का उपयोग कर बनाने रहा हूँ का उपयोग करें और config है

const config = { 
    url: [someURL], 
    method: 'GET', 
    headers: { 
    'customHeader':'token', 
    }, 
    params: { 
    [params] 
    }, 
    maxRedirects: 0, 
    validateStatus: status => (status >= 200 && status < 300) || status === 302, 
}; 

किसी भी मदद वास्तव में क्यों प्रतिक्रिया अपरिभाषित है जब यह मेरे जे एस कोड पहुँचता है, लेकिन डाकिया और क्रोम में ठीक काम करता है के रूप में की सराहना की जाएगी।

एक तरीका मैं इसे हल कर सकता हूं HTTP स्थिति कोड 200 का उपयोग करना और रीडायरेक्ट करने के लिए स्थान शीर्षलेख प्राप्त करना है, लेकिन मैं इसे टालना चाहता हूं क्योंकि यह तकनीकी रूप से रीडायरेक्ट प्रतिक्रिया है।

+0

संभवतः आप 'readyState' स्थिति की जांच करने और' HEADERS_RECEIVED' (https://xhr.spec.whatwg.org/) की तलाश करने का प्रयास कर सकते हैं। यह http://stackoverflow.com/questions/228225/prevent-redirection-of-xmlhttprequest उत्तर भी देखें। –

+0

लेकिन मुझे एक अनिर्धारित प्रतिक्रिया मिलती है, जिसमें कोई भी स्थिति या प्रतिक्रिया निकाय या शीर्षलेख – diepjy

उत्तर

2

'customHeader':'token' आपके अनुरोध का हिस्सा triggers your browser to first send a CORS preflight OPTIONS requestकोई भी हेडर जो आप CORS-safelisted request-headers के रूप में परिभाषित हेडर के अलावा किसी अनुरोध में जोड़ते हैं, एक सीओआरएस प्रीफलाइट विकल्प अनुरोध भेजने के लिए ब्राउज़र को ट्रिगर करते हैं।

पोस्टमैन से आपको यह नहीं मिला है कि ब्राउज़र इंजन के विपरीत, पोस्टमैन सीओआरएस लागू नहीं करता है, इसलिए यह विकल्प अनुरोध नहीं भेजता है। (पोस्टमैन एक ही मूल वेब-सुरक्षा मॉडल के तहत काम नहीं करता है जो ब्राउज़र वेब अनुप्रयोगों के लिए लागू होता है।)

यदि सर्वर सीओआरएस प्रीफलाइट विकल्प अनुरोधों के सही तरीके से प्रतिक्रिया नहीं देता है, तो आपका अनुरोध विफल हो जाएगा और केवल वर्कअराउंड आपके अनुरोध पर 'customHeader':'token' भाग जोड़ने के लिए नहीं है, या अन्यथा आपके अनुरोध को किसी भी तरह से बनाने के लिए जो आपके ब्राउज़र को कॉर्स प्रीफलाइट करने के लिए ट्रिगर करता है।

+0

शामिल नहीं है मेरे पास अन्य अंतराल हैं जो सीओआरएस प्रीफलाइट विकल्प अनुरोधों के साथ ठीक काम करते हैं (प्राप्त करें, पोस्ट करें, हटाएं, पुट और विकल्प), अंत बिंदुओं को छोड़कर एक 302 प्रतिक्रिया वापस करें। मुझे पूरा यकीन नहीं है कि "आपके अनुरोध को किसी भी तरह से बनाने के लिए जो आपके ब्राउज़र को सीओआरएस प्रीफलाइट करने के लिए ट्रिगर करता है" का मतलब है क्या इसका मतलब है कि मुझे अपने अनुरोध में स्थान शीर्षलेख जोड़ना है? – diepjy

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