我想使用jQuery來獲取URL,並明確檢查它是否與302重定向迴應,但不跟蹤重定向。
jQuery的$.ajax
的似乎始終遵循重定向。我怎樣才能防止這種情況,並看到沒有遵循它的重定向?
有包含「jQuery的AJAX重定向」稱號的各種問題,但他們似乎都涉及到一些辦成對方球門,而不僅僅是直接檢查服務器給出了狀態。
我想使用jQuery來獲取URL,並明確檢查它是否與302重定向迴應,但不跟蹤重定向。
jQuery的$.ajax
的似乎始終遵循重定向。我怎樣才能防止這種情況,並看到沒有遵循它的重定向?
有包含「jQuery的AJAX重定向」稱號的各種問題,但他們似乎都涉及到一些辦成對方球門,而不僅僅是直接檢查服務器給出了狀態。
Ajax請求從未有機會不遵循重定向(即,它必須遵循重定向)。更多信息可以在這個答案https://stackoverflow.com/a/2573589/965648
jQuery的瀏覽器的JavaScript引擎的範圍內運行被發現。通過JavaScript或html元素(鏈接,腳本,圖像,音頻或視頻等)請求的每個資源都受http重定向的約束。很遺憾,沒有辦法讓javascript以您需要的方式訪問低級http。
很抱歉,答案是否定的。
而其他人誰回答了這個問題的(可惜)正確的,這個信息是從我們的瀏覽器隱藏起來,我想我會後,我想出了一個解決辦法:
我配置我的服務器應用程序設置包含請求的url的自定義響應頭(X-Response-Url
)。每當我的ajax代碼收到響應時,它會檢查是否定義了xhr.getResponseHeader("x-response-url")
,在這種情況下,它將它與通過$.ajax()
最初請求的url進行比較。如果字符串不同,我知道有一個重定向,另外,我們實際上到達了什麼網址。
這樣做的缺點是需要一些服務器端的幫助,而且如果URL在往返過程中被消除(由於引用/編碼問題等),也可能會出現故障......但對於99%的情況,這似乎完成了工作。
在服務器端,我的具體情況是使用金字塔Web框架Python應用程序,我用下面的代碼片段:
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
歡迎來到未來!
現在,我們有從XHR對象「responseURL」屬性。好極了!
參見How to get response url in XMLHttpRequest?
然而,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開發團隊將東西responseURL在未來的版本。
提示:只是比較responseUrl原始URL。如果相同,則不會給出重定向。如果它的「不確定」,則可能是不支持responseUrl。但正如尼克加維所說,AJAX請求從來沒有機會不遵循重定向,但您可以通過使用responseUrl屬性來解決許多任務。
$.ajax({
type: "POST",
url: "http://arudhrainnovations.com/android/testregister.php",
data: dataString,
dataType: "json",
cache: false,
success: function(result){
alert(result);
}
}
if (result.success==1)
{
windows.locations = "index.html";
return;
}
在活動服務器的json響應之後重定向文件。檢查響應標籤 success ==1
並將下面的代碼用於重定向。
windows.locations =「index.html」;
本準則知道進一步的細節永遠不會工作的兄弟... – brothers28 2015-08-07 11:06:19
祝你好運 – 2016-11-01 20:38:49