因此,如果您回顾一下有关Exchange自动发现的previous question,您会发现获取自动发现网址的简便方法是发送一个非安全,未经过身份验证的GET
请求到服务器,ala:
http://autodiscover.exchangeserver.org/autodiscover/autodiscover.xml
服务器将使用Location
标题中的正确网址进行302重定向回复。
我正在使用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请求始终处理重定向的方式。
我不知道如何抓住这个,以便我可以从响应中获得标题。
或者是否可以设置辅助XHR,以便当它获得302时,它会发送完全不同的请求?
我刚刚更改了它,因此它没有检查响应代码:
if (req.readyState==4) {
return req.getResponseHeader("Location");
}
而当我提醒它的值为null
时。并且在开发控制台中仍然存在相同的错误和响应。所以它似乎要么不跟踪302响应作为响应,要么在擦除响应之后发生了什么?
答案 0 :(得分:3)
请参阅the w3c docs on xhr:XHR将透明地遵循重定向或返回网络错误(就像您从Chrome中看到的那样),具体取决于重定向的目标是否与原始请求位于同一来源。因此,您的代码根本没有机会捕获302响应。这就是“Location”响应标头未设置的原因:此时,您正在检查最终响应的标头,而不是302响应。