Answers:
不符合XMLHttpRequest对象的W3C标准(添加了重点):
如果响应是HTTP重定向:
如果Location头传达的URL的原点与XMLHttpRequest的原点是相同的原点,并且重定向不违反无限循环预防措施,请在遵循相同原点请求事件规则的情况下透明地遵循重定向。
他们正在考虑将其发布:
本规范不包括在本规范的将来版本中考虑的以下功能:
- 禁用以下重定向的属性;
但是最新的规范不再提及这一点。
新的Fetch API支持不同的重定向处理模式:follow
,error
和manual
,但是取消重定向后,我找不到一种查看新URL或状态代码的方法。您可以停止重定向本身,然后它看起来像一个错误(空响应)。如果这就是您所需要的,那就很好了。你也应该知道,通过该API提出的请求是不可取消的还没有。 他们是现在。
至于XMLHttpRequest,您可以HEAD
通过服务器检查URL是否已更改:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
您不会获得状态码,但是会找到新的URL,而无需从中下载整个页面。
OPTIONS
可能是一个更好的选择,无论如何仅适用于非一般目的,等等。管理员已配置了重定向整个站点/架构,例如HTTP-> HTTPS
您可以使用responseURL
属性来获取重定向目标,或检查响应是否最终从您接受的位置获取。
当然,这意味着无论如何都将获取结果,但是至少您可以获取有关重定向目标的必要信息,例如,当您想丢弃响应时检测条件。