AngularJS忽略了一些标题

时间:2013-08-08 11:08:30

标签: angularjs coffeescript http-headers cors

我正在玩角度,我遇到了一个小问题。

我正在尝试为http响应设置自定义标头,然后在angular的侧面读取它的值。 标题已设置,我确信这是因为chrome的调试工具确认:

Response headers

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

当我尝试通过http响应拦截器以角度访问标头并在控制台中显示它们时,会出现问题。这是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

我真的不明白为什么角度剥离所有这些标题。有谁可以向我解释一下?有没有办法访问我的自定义标头的值?

提前谢谢。

1 个答案:

答案 0 :(得分:12)

我找到了自己问题的答案。这不是Angular的错。问题是我正在使用CORS。

我在CORS文档中找到了这样的信息:

  

用户代理必须过滤除了那些简单响应标头之外的所有响应标头,或者其字段名称是对Access-Control-Expose-Headers标头的其中一个值的ASCII不区分大小写的匹配(如果在将响应头暴露给CORS API规范中定义的API之前,

     

因此,XMLHttpRequest的getResponseHeader()方法不会暴露任何未在上面指出的标题。

这意味着我只需添加一个标题Access-Control-Expose-Headers: custom-header