क्या यूआरएल अनुरोध प्राप्त करने का कोई तरीका है जिसे आप अंततः पुनर्निर्देशित कर रहे हैं जब xhr अनुरोध की प्रतिक्रिया 301 है?
मेरे पास ऐसी साइट है जिसमें पुराने संस्करण से कई विरासत यूआरएल हैं, जो सही नए यूआरएल पर 301 प्रतिक्रियाएं लौटाते हैं।
उपयोगिता उद्देश्यों के लिए, मैं एक पुराने यूआरएल के लिए अनुरोध करने में सक्षम होना चाहता हूं, और नया/पुनः प्राप्त करने में सक्षम होना चाहता हूं यानी "/oldpage.aspx?foo=someParam" को अनुरोध भेजें, नया वापस प्राप्त करें यूआरएल "/ arbitaryNewPageName/कुछ पैराम"।
मैं फ़ायरबग कंसोल में इस के साथ प्रयोग करना किया गया है:
$.ajax({
url: "/oldpage.aspx?foo=someParam",
success: function(response, status, jqxhr){
//poking around, trying to get the new URL, "/arbitraryNewPage/someParam"
console.log(jqxhr.getAllResponseHeaders());
console.log(jqxhr);
},
beforeSend: function(jqxhr, settings){
console.log(jqxhr);
console.log(settings);
}
});
मैं फ़ायरबग में देख सकते हैं कि जब इस कोड चलने पर वह एक पाने के लिए "/oldpage.aspx?foo=someParam" करता है , और एक 301 प्रतिक्रिया प्राप्त करता है, फिर एक और "/ arbitaryNewPageName/कुछ पैराम" प्राप्त करने के लिए मिलता है।
पहले अनुरोध के लिए, मैं प्रतिक्रिया शीर्षलेख के स्थान मान में पुनर्निर्देशित यूआरएल देखता हूं। दुर्भाग्यवश, दूसरा अनुरोध $ .ajax.success फ़ंक्शन को पास किया गया है, और इसमें केवल अनुरोध शीर्षलेख के रेफरर मान में रीडायरेक्ट किया गया URL है।
क्या पहले प्रतिक्रिया के जवाब को रोकने में शायद कोई तरीका है, या शायद दूसरे अनुरोध के लिए अनुरोध शीर्षलेख देखें?
संपादित करें: प्रतिक्रियाओं के लिए सभी को धन्यवाद। मुझे लगता है कि मुझे यह स्पष्ट करने के लिए एक छोटी सी पृष्ठभूमि देने की ज़रूरत है कि मैं वास्तव में क्या देख रहा हूं।
एक व्यापारिक उपयोगकर्ता ने मुझे एक ऐसी सूची बनाने के लिए कहा है जो विरासत यूआरएल को नए यूआरएल से जोड़ता है। चूंकि मैंने सर्वर पर नए यूआरएल पर लीगेसी यूआरएल को रीडायरेक्ट करने के साधनों को पहले से ही लागू कर दिया है, इसलिए मैं उस काम को वापस करने और एक स्क्रिप्ट बनाने की उम्मीद कर रहा था जिसने विरासत यूआरएल के अनुरोध किए थे और यूआरएल प्राप्त किए थे कि अनुरोधों को रीडायरेक्ट किया गया था। कुछ इस तरह:
for (var i = 0; i < arrayOfLegacyUrls.length; i++)
{
$.ajax({
url: arrayOfLegacyUrls[i],
success: function(response, status, jqxhr){
var newUrl = "???"; //do magic to get URL that request was redirected to
writeToFileForBusinessUser(arrayOfLegacyUrls[i], newUrl);
}
});
}
मेरे सवाल की जड़ यह है: मैं यूआरएल मेरे अनुरोध एक्सएचआर से पर पुनः निर्देशित किया गया था मिल सकता है? अब तक, उत्तर "नहीं" प्रतीत होता है।
बाहर की जाँच करें इस पोस्ट को पढ़ने के लिए चाहते हो सकता है: http://stackoverflow.com/a/1534662/64741 – Zachary
[निर्धारण क्या jQuery .ajax() के संभावित डुप्लिकेट रीडायरेक्ट की एक स्ट्रिंग को हल करता है करने के लिए] (http://stackoverflow.com/questions/6767618/determining-what-jquery-ajax-resolves-a-string-of-redirects-to) – JAAulde