AngularJS - 无法从 $http 读取响应头

10

当我使用检查器查看请求时,我的http响应包含头文件Authentication(如此处所述:Authentication:76efbc0946773b62c93e952b502a47acd898200f6f80dc46ac87ffc501c00780),但对headers("Authentication")的调用返回null

return $http({
    method: "GET",
    url: url,
    headers: {
      'Content-Type': "application/json"
    }
}).success(function (data, status, headers, config) {
    console.log(headers("Authentication"));
})

你有没有想法,我可能做错了什么?

顺便说一下,我尝试着改回 "promise" 的方式,使用 .then,但问题仍然存在。


5
为了使服务器响应可访问,您可能需要在响应中添加Access-Control-Expose-Headers - 参见https://dev59.com/RWQn5IYBdhLWcg3wLkkd?lq=1 - Brad Barber
@BradBarber,就这样了。如果你想获得奖励,请回复。 - GeoffreyB
2个回答

26

你的代码看起来很好,但如果这是CORS请求,则服务器需要在响应中包含Access-Control-Expose-Headers: {任何自定义标头}。

有一个更详细的先前的问题/答案:使用Angularjs的$http时读取响应标头


启用CORS不会影响安全性。我们应该在响应正文中发送所需的数据。 - maheshsgr

5
在成功回调函数中添加以下内容:
console.log(headers('content-type'));
console.log(headers());  // All headers

我认为在你的情况下,第一行返回了一个结果。
在第二行中,你是否已经得到了“身份验证”?

自定义标头将在同一域中可见。在跨域情况下,您需要从服务器发送 Access-Control-Expose-Headers: Authentication, ... 标头。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接