在 API 响应的 Header 中设置令牌

Set token in Header on API response

我正在 Angular 创建一个登录页面。登录 API 调用 (POST) 后,我得到一个令牌作为响应。在控制器中,我试图在 "common" header 中设置此令牌,以便我可以使用它来授权所有进一步的 API 调用:

LoginSrv.authenticate($scope.credentials).then(
        function(data){
            $http.defaults.headers.common.Authorization = data.token;
            $state.go('nextpage');
        }
);

下一页又是POSTAPI调用。在这个调用之后,当我在调试器中检查请求 header 时,我在 header 中看到了那个标记。此响应再次导航到第三页(这次我没有再次设置 header)。在第三页上,当我调用 API(GET 或 POST)时,"Authorization" 这次在 header 中不可用。我不确定这是如何自行删除的。

鉴于您的第三个请求是跨域的,您的服务器似乎没有正确响应预检浏览器 OPTIONS 请求,该请求用于在发送您的请求之前检查可用的方法等。这不是 Angular 问题。一种解决方案是配置您的服务器以正确响应此 OPTIONS 请求。这个 SO link(在之前的评论中提供)更详细地解释和讨论了潜在的解决方案