XHR अनुरोध के प्रतिसाद के रूप में पुनर्निर्देशित करना


149

यदि ब्राउज़र को एक अजाक्स अनुरोध पर पुनर्निर्देशित प्रतिक्रिया प्राप्त होती है तो क्या होता है?


संबंधित: stackoverflow.com/q/8905545/248058
Knu

जवाबों:


216

यदि ब्राउज़र को एक अजाक्स अनुरोध पर पुनर्निर्देशित प्रतिक्रिया प्राप्त होती है तो क्या होता है?

यदि सर्वर एक रीडायरेक्ट (उर्फ 302 रिस्पांस प्लस लोकेशन: हेडर) भेजता है, तो रीडायरेक्ट स्वतः ही ब्राउज़र द्वारा पीछा किया जाता है। दूसरे अनुरोध की प्रतिक्रिया (यह भी एक और अनुप्रेषित नहीं है) कि आपके कार्यक्रम से क्या पता चलता है।

वास्तव में, आपके पास यह पता लगाने की क्षमता नहीं है कि 302 प्रतिक्रिया हुई है या नहीं। यदि 302 पुनर्निर्देशित एक 200 की ओर जाता है, तो आपका कार्यक्रम समान रूप से कार्य करता है जैसे कि मूल अनुरोध सीधे 200 का नेतृत्व करता है।

यह मेरा अनुभव और व्यवहार दोनों है जो कल्पना में कहा गया है

2016 अपडेट: समय बीत चुका है, और अच्छी खबर यह है कि नया भ्रूण () एपीआई एक्सएचआर के समान डिफ़ॉल्ट व्यवहार के साथ, रीडायरेक्ट को नियंत्रित करने के लिए महीन-दाने वाले नियंत्रण की पेशकश करने की कल्पना है। उस ने कहा, यह केवल उसी जगह काम करता है जहां मूल () को लागू किया जाता है । भ्रूण के पॉलीफ़िल संस्करण () -जो XHR पर आधारित हैं- XHR की सीमाएँ जारी रखते हैं । सौभाग्य से, देशी ब्राउज़र समर्थन अच्छी तरह से बाहर चक्कर लगा रहा है।


47
दिलचस्प बात यह है कि मैं इस पर आ गया क्योंकि मैं एक ऐसी स्थिति का सामना कर रहा हूं, जहां रीडायरेक्ट का स्पष्ट रूप से पालन नहीं किया जा रहा है ... ऐसा तब होता है जब रीडायरेक्ट उसी मूल नीति का उल्लंघन करता है।
गस

4
@Gus जो शायद तार्किक है
दिमित्री

1
401 (या किसी भी 4xx या 5xx त्रुटि) पर पुनर्निर्देशित होने की स्थिति में, मैं मान सकता हूं कि आपका कार्यक्रम ऐसा व्यवहार करेगा जैसे कि अनुरोध सीधे 401 पर लाया गया हो। क्या ऐसा नहीं है कि आप क्या देख रहे हैं?
ग्रीम

2
RESTful API एक POST अनुरोध के बाद 201 और एक स्थान हेडर भेज सकता है; restapitutorial.com/lessons/httpmethods.html देखें ।

1
2019 अपडेट: 3 साल पहले की अपेक्षा के अनुसार काम नहीं कर रहा है):
lcjury

7

ajax-requestइस रीडायरेक्ट afaik का पालन करेंगे। वास्तविक सामग्री ( ) .responseText, .responseXMLउस पृष्ठ की सामग्री होगी जिसे आप पुनर्निर्देशित करते हैं।

आप रीडायरेक्ट (अवरोधन करने में सक्षम हो सकता status-code, location-headerपर) readyState2 या 3 है, लेकिन यकीन नहीं इसके बारे में।


नहीं, उन सभी राज्यों में एक ही स्थिति है। यहां तक ​​कि का मूल्य getAllResponseHeaders()बराबर है।
सेबास्टियनवागनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.