在AngularJS应用程序中,我通过$http.post调用服务器url。该URL成功响应是30x重定向,我的问题在于$http.post严格遵循此重定向并在成功回调中返回最终调用的结果。
我想拦截此重定向并手动将用户重定向(更改浏览器URL)到最终页面。是否可以实现?
$http
服务是一个核心Angular服务,通过浏览器的XMLHttpRequest对象或JSONP方便地与远程HTTP服务器通信。因此,重定向发生得比Angular能够对其进行任何操作更早,而且无法停止。如果响应具有301、302、303、307或308的HTTP状态代码
如果重定向违反了无限循环预防措施,则会出现网络错误。
否则,请执行以下步骤:
将请求URL设置为位置标头传达的URL。
如果源起点和请求URL的起点相同,则在遵守同源请求事件规则的同时透明地跟随重定向。
否则,请按照跨源请求步骤进行,并终止此算法的步骤。
HTTP对用户代理有关在重定向期间保留请求方法和请求实体主体的要求,并且还要求最终用户被通知某些类型的自动重定向。
$http
调用,然后使用类似于cURL的服务器端工具(取决于服务器端使用的语言),该工具可以设置为不遵循重定向以获取资源。