JQuery $ .ajax में एक रीडायरेक्ट का पता लगाना?



Answers

आने वाला कल आपका स्वागत करता है!

फिलहाल हमारे पास xhr ऑब्जेक्ट से "respondURL" प्रॉपर्टी है। वाह!

XMLHttpRequest में प्रतिक्रिया url कैसे प्राप्त करें देखें ?

हालांकि, jQuery (कम से कम 1.7.1) XMLHttpRequest ऑब्जेक्ट तक सीधे पहुंच नहीं देता है। आप इस तरह कुछ उपयोग कर सकते हैं:

var xhr;
var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
  xhr = _orgAjax();
  return xhr;
};

jQuery.ajax('http://test.com', {
  success: function(responseText) {
    console.log('responseURL:', xhr.responseURL, 'responseText:', responseText);
  }
});

यह एक साफ समाधान नहीं है और मुझे लगता है कि jQuery टीम भविष्य में रिलीज में respondURL के लिए कुछ करेगी।

टीआईपी : प्रतिक्रिया यूआरएल के साथ मूल यूआरएल की तुलना करें। यदि यह बराबर है तो कोई रीडायरेक्ट नहीं दिया गया था। यदि यह "अपरिभाषित" है तो प्रतिक्रिया यूआरएल शायद समर्थित नहीं है। हालांकि निक गर्व ने कहा, AJAX अनुरोध को कभी भी रीडायरेक्ट का पालन न करने का अवसर नहीं है लेकिन आप प्रतिक्रिया यूआरएल संपत्ति का उपयोग करके कई कार्यों को हल कर सकते हैं।

Question

मैं एक यूआरएल प्राप्त करने के लिए jQuery का उपयोग करना चाहता हूं और स्पष्ट रूप से जांच करता हूं कि यह 302 रीडायरेक्ट के साथ प्रतिक्रिया करता है, लेकिन रीडायरेक्ट का पालन नहीं करता है।

jQuery का $.ajax हमेशा रीडायरेक्ट का पालन करता प्रतीत होता है। मैं इसे कैसे रोक सकता हूं, और इसका पालन किए बिना रीडायरेक्ट देख सकता हूं?

"Jquery AJAX रीडायरेक्ट" जैसे शीर्षकों के साथ कई प्रश्न हैं, लेकिन वे सभी एक सर्वर देता है जो सीधे स्थिति की जांच करने के बजाय, कुछ अन्य लक्ष्य को पूरा करने में शामिल होते हैं।




जबकि अन्य लोगों ने इस प्रश्न का उत्तर दिया है (दुख की बात है) सही है कि यह जानकारी ब्राउज़र से हमारे द्वारा छिपी हुई है, मैंने सोचा कि मैं एक वर्कअराउंड पोस्ट करूंगा जिसके साथ मैं आया हूं:

मैंने अपने सर्वर ऐप को एक कस्टम प्रतिक्रिया शीर्षलेख ( X-Response-Url ) सेट करने के लिए कॉन्फ़िगर किया था जिसमें अनुरोध किया गया यूआरएल था। जब भी मेरा AJAX कोड प्रतिक्रिया प्राप्त करता है, तो यह जांचता है कि xhr.getResponseHeader("x-response-url") परिभाषित किया गया है, इस मामले में यह उस यूआरएल से तुलना करता है जिसे मूल रूप से $.ajax() माध्यम से अनुरोध किया जाता है। यदि तार अलग-अलग हैं, तो मुझे पता है कि एक रीडायरेक्ट था, और इसके अतिरिक्त, हम वास्तव में क्या यूआरएल पहुंचे थे।

इसमें कुछ सर्वर-साइड सहायता की आवश्यकता होती है, और राउंड ट्रिप के दौरान यूआरएल को घुमाया जाता है (उद्धरण / एन्कोडिंग इश्यू आदि के कारण) तो भी टूट सकता है ... लेकिन 99% मामलों के लिए, ऐसा लगता है कि ऐसा लगता है काम किया

सर्वर की तरफ, मेरा विशिष्ट मामला पिरामिड वेब ढांचे का उपयोग कर एक अजगर आवेदन था, और मैंने निम्न स्निपेट का उपयोग किया:

import pyramid.events

@pyramid.events.subscriber(pyramid.events.NewResponse)
def set_response_header(event):
    request = event.request
    if request.is_xhr:
        event.response.headers['X-Response-URL'] = request.url



Links