Ajax jquery:如何处理重定向

Ajax jquery:如何处理重定向,ajax,redirect,Ajax,Redirect,我有以下情况: -带有表单和一些字段的简单html页面 -提交表单时,执行对指定URL的获取,该URL回复302,并且必须重定向用户的URL也位于位置标头中 -我和费德勒核实过了,一切似乎都是正确的 简单html页面包含以下代码: function doSubmit() { var _url = $("#url").val(); $.ajax({ url: _url, complete: function(xmlHttp) {

我有以下情况: -带有表单和一些字段的简单html页面 -提交表单时,执行对指定URL的获取,该URL回复302,并且必须重定向用户的URL也位于位置标头中 -我和费德勒核实过了,一切似乎都是正确的

简单html页面包含以下代码:

function doSubmit() {
    var _url = $("#url").val();
    $.ajax({
        url: _url,
        complete: function(xmlHttp) {
            // xmlHttp is a XMLHttpRquest object
            alert(xmlHttp.status);
 }
问题是,在提交请求时,我收到的状态代码为:0,无法检索任何位置标头

更新

我尝试使用Fetch API,但似乎不起作用:

var req = new Request(url, {
    method: 'get',
    redirect: 'manual',
    "Cache-Control": "no-cache"
});
fetch(req).then(function (res) {
    alert(res.status);
}, function (e) {
    alert('error');
});

它总是以错误结束。

标准ajax请求会自动跟随重定向,并且无法阻止浏览器执行此操作

作为ajax的替代方案,正在开发一种新的方法,它允许手动重定向处理。您需要检查当前的浏览器支持是否足以满足您的需要

fetch API的问题是,由于防止数据泄漏的安全原因,在重定向的情况下,响应对象被过滤,并且状态为0。因此,基本上只剩下response.type和opaqueredirect值。请看。换句话说,您可以阻止重定向,但不能访问重定向响应中的信息,除非我遗漏了什么


因此,您的问题的答案是-目前不可能实现完整的手动重定向处理,包括从重定向响应中读取重定向URL。

您没有关闭AJAX请求或它的完整功能。你需要}和};警报后。我不确定这是否是电话不通的原因。我不太明白这个问题。Ajax请求以静默方式跟随重定向,因此在JavaScript中您无法控制重定向。作为ajax请求的结果,您将从上次重定向的URL@obsidiange:我没有复制/粘贴所有代码,但我有最终的}@Rafael:目标是不自动遵循重定向,但似乎这是不可能的;无论如何,当我输入一个url并用重定向进行回复时,我收到的状态码是0,因此我无法检索成功的回复。幸运的是,它不能与FetchAPI一起工作。我的浏览器支持它们;我用FetchAPI调用更新了上面的代码。使用Fiddler,我可以看到实际上有正确的答案302,但这不是我在上面代码中找到的。@StefanoD'Urso我检查了获取API的详细信息,并相应地更新了我的答案。事实证明,由于安全/隐私原因,fetchapi在重定向响应的功能上受到限制。