जवाबों:
XMLHttpRequest ऑब्जेक्ट (जोड़ा गया जोर) के लिए W3C मानक के अनुसार नहीं :
यदि प्रतिक्रिया HTTP पुनर्निर्देशित है:
यदि स्थान हेडर द्वारा बताए गए URL की उत्पत्ति XMLHttpRequest मूल के साथ एक ही मूल है और रीडायरेक्ट अनंत लूप सावधानियों का उल्लंघन नहीं करता है, तो समान-मूल अनुरोध ईवेंट नियमों का पालन करते हुए पारदर्शी रूप से रीडायरेक्ट का पालन करें ।
वे इसे भविष्य की रिलीज़ के लिए मान रहे थे :
इस विनिर्देश में निम्नलिखित विशेषताएं शामिल नहीं हैं जिन्हें इस विनिर्देश के भविष्य के संस्करण के लिए माना जा रहा है:
- निम्नलिखित रीडायरेक्ट को अक्षम करने के लिए संपत्ति;
लेकिन नवीनतम विनिर्देश में अब इसका उल्लेख नहीं है।
नई एपीआई लायें का समर्थन करता है रीडायरेक्ट से निपटने के विभिन्न तरीकों: follow, error, और manual, लेकिन मैं जब पुनर्निर्देशन रद्द कर दिया गया नया URL या स्थिति कोड देखने के लिए एक रास्ता नहीं मिल रहा। आप बस पुनर्निर्देशन को रोक सकते हैं, और फिर यह एक त्रुटि (खाली प्रतिक्रिया) की तरह दिखता है। अगर आप की जरूरत है, आप जाने के लिए अच्छे हैं। इसके अलावा आपको इस बात की जानकारी होनी चाहिए कि इस API के माध्यम से किए गए अनुरोध अभी तक रद्द नहीं हैं । वे कर रहे हैं अब।
XMLHttpRequest के रूप में, आप HEADसर्वर और निरीक्षण कर सकते हैं कि क्या URL बदल गया है:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
आपको स्थिति कोड नहीं मिलेगा, लेकिन इससे पूरा पृष्ठ डाउनलोड किए बिना नया URL मिल जाएगा।
OPTIONSकरना एक बेहतर विकल्प हो सकता है, वैसे भी केवल गैर सामान्य उद्देश्य के लिए काम करता है, आदि। प्रशासक ने पूरी साइट / स्कीमा को पुनः निर्देशित किया है, जैसे HTTP -> HTTPS
आप responseURLसंपत्ति का उपयोग पुनर्निर्देशित गंतव्य प्राप्त करने के लिए कर सकते हैं या जांच सकते हैं कि प्रतिक्रिया अंततः आपके द्वारा स्वीकार किए गए स्थान से प्राप्त हुई थी या नहीं।
बेशक इसका मतलब है कि परिणाम वैसे भी प्राप्त किया जाता है, लेकिन कम से कम आप रीडायरेक्ट गंतव्य के बारे में आवश्यक जानकारी प्राप्त कर सकते हैं और उदाहरण के लिए शर्तों का पता लगा सकते हैं जब आप प्रतिक्रिया को त्यागना चाहते हैं।
नहीं, आपके पास XMLHttpRequest द्वारा उजागर एपीआई में कोई जगह नहीं है जो आपको 301 या 302 का स्वचालित रूप से अनुसरण करने के अपने डिफ़ॉल्ट व्यवहार को ओवरराइड करने की अनुमति देता है।
यदि क्लाइंट विंडोज़ पर IE चला रहा है तो आप उस व्यवहार को रोकने के लिए एक विकल्प सेट करने के बजाय WinHTTP का उपयोग कर सकते हैं लेकिन बहुत सीमित समाधान है।