阻止 Xmlhttprequest 的重定向
2022-08-30 04:51:23
是否可以在发送 XMLHttpRequest-s 时阻止浏览器跟踪重定向(即获取重定向状态代码并自行处理)?
是否可以在发送 XMLHttpRequest-s 时阻止浏览器跟踪重定向(即获取重定向状态代码并自行处理)?
不符合 XMLHttpRequest 对象的 W3C 标准(着重号是后加的):
如果响应是 HTTP 重定向:
如果 Location 标头传达的 URL 的源与 XMLHttpRequest 源同源,并且重定向不违反无限循环预防措施,则在遵守同源请求事件规则的同时透明地遵循重定向。
他们正在考虑将来发布它:
本规范不包括在此规范的未来版本中考虑的以下功能:
- 属性以禁用以下重定向;
但最新的规范不再提到这一点。
新的 Fetch API 支持不同的重定向处理模式:、 、 和 ,但我找不到在重定向被取消时查看新 URL 或状态代码的方法。您只需停止重定向本身,然后它看起来像一个错误(空响应)。如果这就是你所需要的,你就可以走了。此外,您应该知道,通过此API发出的请求尚不可取消。他们现在是。follow
error
manual
至于XMLHttpRequest,你可以在服务器和检查URL是否已经改变:HEAD
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
您不会获得状态代码,但会找到新的URL,而无需从中下载整个页面。