gpt4 book ai didi

angularjs - 303 重定向不适用于 Angular HTTP POST

转载 作者:行者123 更新时间:2023-12-02 23:03:29 33 4
gpt4 key购买 nike

我正在调用身份验证服务,其中执行 $http.post 返回 303 响应,重定向到返回响应的 get 调用。

当我使用 Postman 进行 post 调用时,我得到了所需的响应,但是当我进行有 Angular 的 $http.post 调用时,它返回 401 错误(这是用户未授权的)

我在进行 Angular 调用时错过了什么吗?后端服务似乎工作正常,因为它在 Postman 上工作正常。

这就是 $http 调用的样子:

$http.post(url, userData).success(function(data, status) {
//handle success
}.error(function(data, status) {
//handle error
});

在这种情况下,url 和用户数据的构造绝对正确。

最佳答案

您收到 GET 调用的原因是浏览器在 Angular 到达之前处理 303 响应。处理顺序是先转到浏览器,然后转到 Angular 框架。

简单来说,发生的事情是:您调用服务器 --> 服务器返回 303 响应 --> 您的浏览器处理 303 并向某个 url 发出请求(应该是“location”) ' 在响应头中) --> 服务器收到请求并返回 401 授权响应 --> 浏览器再次首先收到 401 响应,但这次浏览器将响应重定向到 Angular --> 最后你可以收到error() 内的数据和状态。

解决方案可能是切换到其他响应状态代码,例如 2xx,并且您可以从正文中获取位置。然后您可以手动进行重定向。如果您必须使用 303 或其他 3xx 作为响应代码,我认为目前没有任何有效的解决方案,因为您无法对浏览器做太多事情。据我所知,浏览器级别可能有解决方案,但不知道什么时候会发生。

希望这可以帮助任何遇到类似问题的人,尽管这个问题提出已经近一年了。

其他一些引用:https://groups.google.com/forum/#!topic/angular/GKkdipdMbdo您可以从上面的链接中看到类似的解决方案。

关于angularjs - 303 重定向不适用于 Angular HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19952518/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com