防止Xmlhttprequest重定向

在发送XMLHttpRequest-s(即重新获取重定向状态代码并自己处理它)时,是否有可能阻止浏览器遵循重定向?


不符合XMLHttpRequest对象的W3C标准(重点添加):

如果响应是HTTP重定向:

如果由Location标头传送的URL的起源与XMLHttpRequest起源相同,并且重定向不违反无限循环预防措施, 在观察同源请求事件规则时透明地遵循重定向

他们正在考虑将来的版本:

本规范不包括以下本规范未来版本正在考虑的功能:

  • 属性禁用下列重定向;
  • 但最新的规范不再提到这一点。


    新的Fetch API支持不同的重定向处理模式: followerrormanual ,但是我找不到在重定向被取消时查看新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而不从中下载整个页面。


    您可以使用responseURL属性来获取重定向目标,或者检查响应是否最终从您接受的位置获取。
    这当然意味着无论如何都会获取结果,但至少您可以获得有关重定向目标的必要信息,例如在您想放弃响应时检测条件。

    链接地址: http://www.djcxy.com/p/71713.html

    上一篇: Prevent redirection of Xmlhttprequest

    下一篇: Catching 302 FOUND in JavaScript