gpt4 book ai didi

ajax - 如何捕获预期(和预期)的 302 Ajax 响应?

转载 作者:行者123 更新时间:2023-12-03 01:03:31 27 4
gpt4 key购买 nike

所以,如果你回头看看我的previous question关于 Exchange 自动发现,您会发现获取自动发现 URL 的最简单方法是向服务器发送不安全、未经身份验证的 GET 请求,ala:

http://autodiscover.exchangeserver.org/autodiscover/autodiscover.xml

服务器将响应 302 重定向,并在 Location header 中包含正确的 URL。

我首先尝试使用 Chrome 扩展程序进行一些非常简单的操作,我有:

if (req.readyState==4 && req.status==302) {
return req.getResponseHeader("Location");
}

使用完整的 XML Post 和用户凭据设置另一个 ajax 调用,

但是 Chrome 此时会挂起,并且查看开发人员面板显示它没有返回响应,而是表现得像没有给出响应,同时显示了

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

在错误日志中。

在我看来,引用确切的响应状态与“捕获”它大致相同,但我不确定问题是否出在 Chrome/WebKit 上,或者这是否是 XHR 请求始终处理重定向的方式。

我不知道如何捕获这个,以便我仍然可以从响应中获取 header 。

或者是否可以设置一个辅助 XHR,以便当它收到 302 时,它会发送一个完全不同的请求?

快速更新

我刚刚更改了它,以便它不检查响应代码:

if (req.readyState==4) {
return req.getResponseHeader("Location");
}

相反,当我警告该值时,它是null。并且开发控制台中仍然存在相同的错误并且没有响应。所以看起来它要么不跟踪 302 响应作为响应,要么在清除该响应之后发生了一些事情?

最佳答案

参见the w3c docs on xhr :XHR 将透明地遵循重定向或返回网络错误(就像您从 Chrome 中看到的那样),具体取决于重定向的目标是否与原始请求位于同一来源。所以你的代码根本没有机会捕获 302 响应。这就是未设置“Location”响应 header 的原因:此时,您正在检查最终响应的 header ,而不是 302 响应。

关于ajax - 如何捕获预期(和预期)的 302 Ajax 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com