我想使用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