$ http响应拦截器头

时间:2013-11-18 13:12:56

标签: javascript angularjs angular-http

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

$http拦截器的一部分:

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

AuthToken未定义。

2 个答案:

答案 0 :(得分:29)

这是一个CORS问题。

回复应包含列出您要使用的特定标题的Access-Control-Expose-Headers

e.g。 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');

答案 1 :(得分:0)

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

 <system.webServer>
  <httpProtocol>
      <customHeaders>
         <add name="Access-Control-Expose-Headers" value="AuthToken"/>
      </customHeaders>
    </httpProtocol>
 </system.webServer>