11

我正在从服务器发送一个自定义标头作为响应。在$http响应拦截器中,我想获取此标头,但我能获得的唯一标头是Content-type标头。我该如何解决我的问题?

我的$http拦截器的一部分:

response: function (response) {
            var AuthToken = response.headers('AuthToken');
            return response || $q.when(response);
        },

AuthToken未定义。

4

2 回答 2

29

这是一个 CORS 问题。

响应应包括Access-Control-Expose-Headers列出您要使用的特定标头。

例如 Access-Control-Expose-Headers: AuthToken, AnotherCustomHeader

根据您的服务器设置,这可以使用 .htaccess 文件 (Apache) 设置站点范围

<IfModule mod_headers.c>
Header set Access-Control-Expose-Headers AuthToken,AnotherCustomHeader
</IfModule>

或在您的服务器代码(php)中设置每个请求

header('Access-Control-Expose-Headers: AuthToken, AnotherCustomHeader');
于 2014-01-26T10:12:13.030 回答
0

@slamborne,听起来不错。对于.Net

 <system.webServer>
  <httpProtocol>
      <customHeaders>
         <add name="Access-Control-Expose-Headers" value="AuthToken"/>
      </customHeaders>
    </httpProtocol>
 </system.webServer>
于 2016-12-16T06:53:17.260 回答