AngularJS$http:如何避免重定向跟踪

AngularJS $http: how to avoid redirect following

本文关键字:何避免 重定向 跟踪 http AngularJS      更新时间:2023-09-26

在AngularJS应用程序中,我对服务器URL进行了$http.post 调用。这个 url 的成功响应是 30x 重定向,我的问题是 $http.post 严格遵循这个重定向并在成功回调中返回最终调用的结果。我想拦截此重定向并手动将用户(更改浏览器 URL)重定向到最终页面。有可能吗?

根据

文档,$http服务是一个核心的 Angular 服务,它通过浏览器的 XMLHttpRequest 对象或 JSONP 促进与远程 HTTP 服务器的通信。

知道

这一点,并且知道XMLHttpRequest的规范,可能无法拦截重定向。

XMLHttpRequest 的 W3C 规范说

如果响应的 HTTP 状态代码为 301、302、303、307 或 308

如果重定向违反了无限循环预防措施,这是一个网络 错误。

否则,请运行以下步骤:

将请求 URL 设置为位置标头传达的 URL。

如果源源和请求 URL 的来源是同一来源 透明地遵循重定向,同时观察同源 请求事件规则。

否则,请按照跨源请求步骤并终止 此算法的步骤。

HTTP 对用户代理提出了有关保留的要求 重定向期间的请求方法和请求实体正文,以及 还要求通知最终用户某些类型的自动 重 定向。

因此,重定向早在 Angular 可以对此执行任何操作之前就发生了,并且无法停止。

另一种选择是对您自己的服务器进行$http调用,然后使用类似 cURL 服务器端(取决于服务器端使用的语言)之类的东西,可以将其设置为不遵循重定向,以获取资源。