gpt4 book ai didi

AngularJS忽略了一些标题

转载 作者:行者123 更新时间:2023-12-03 08:21:29 28 4
gpt4 key购买 nike

我正在玩一些 Angular ,我遇到了一个小问题。

我正在尝试为 http 响应设置一个自定义 header ,然后在 angular 端读取它的值。
header 已设置,我确信这一点,因为 chrome 的调试工具确认:

Response headers

这意味着服务器端很好。到现在为止还挺好。

当我尝试通过 angular 的 http 响应拦截器访问 header 并在控制台中显示它们时,就会出现问题。这是 CoffeeScript 中的代码:

angular.module('app').factory 'httpInterceptor', function($q) ->
(promise) ->
success = (response) ->
console.log response.headers()
response
error = (response) ->
$q.reject(response)

promise.then success, error

angular.module('app').config ($httpProvider) ->
$httpProvider.responseInterceptors.push('httpInterceptor')

我得到输出:

Console output

我真的不明白为什么 Angular 会剥离所有这些标题。谁能给我解释一下?有什么方法可以访问我的自定义 header 的值?

先感谢您。

最佳答案

我找到了我自己问题的答案。这不是 Angular 的错。问题是我正在使用CORS。
我在 CORS 文档中找到了这样的信息:

User agents must filter out all response headers other than those that are a simple response header or of which the field name is an ASCII case-insensitive match for one of the values of the Access-Control-Expose-Headers headers (if any), before exposing response headers to APIs defined in CORS API specifications.

The getResponseHeader() method of XMLHttpRequest will therefore not expose any header not indicated above.


这意味着我必须简单地添加一个标题 Access-Control-Expose-Headers: custom-header .

关于AngularJS忽略了一些标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124483/

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