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

时间:2014-12-26 09:51:21

标签: javascript angularjs redirect

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

1 个答案:

答案 0 :(得分:8)

根据docs$http服务是一项核心Angular服务,可通过浏览器的XMLHttpRequest对象或JSONP促进与远程HTTP服务器的通信。

了解并了解XMLHttpRequest的规范后,可能无法拦截重定向。

W3C spec for XMLHttpRequest

  

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

     

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

     

否则,请执行以下步骤:

     

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

     

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

     

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

     

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

因此,在Angular可以对其做任何事情之前很久就会发生重定向,并且它无法停止。

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

相关问题