Javascript $http响应拦截器标头
我正在从服务器发送一个自定义头作为响应。在Javascript $http响应拦截器标头,javascript,angularjs,angular-http,Javascript,Angularjs,Angular Http,我正在从服务器发送一个自定义头作为响应。在$http响应拦截器中,我想得到这个头,但我能得到的唯一头是内容类型头。我如何解决我的问题 我的$http拦截器的一部分: response: function (response) { var AuthToken = response.headers('AuthToken'); return response || $q.when(response); }, AuthToken未定义。这
$http
响应拦截器中,我想得到这个头,但我能得到的唯一头是内容类型
头。我如何解决我的问题
我的$http
拦截器的一部分:
response: function (response) {
var AuthToken = response.headers('AuthToken');
return response || $q.when(response);
},
AuthToken
未定义。这是CORS问题
响应应包括Access Control Expose Headers
列出您要使用的特定头
e、 g。
访问控制公开头:AuthToken,另一个CustomHeader
根据您的服务器设置,可以使用.htaccess文件(Apache)在站点范围内进行设置
@斯兰伯恩,听起来不错。 对于.Net
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Expose-Headers" value="AuthToken"/>
</customHeaders>
</httpProtocol>
</system.webServer>
你不需要$q.when(response)
,如果你在chrome的网络配置文件中签入headers选项卡,无论服务器端是发送headers还是NotAnglar的response header处理对我来说都很好,这都没有任何意义。它甚至修复了firefox中的一个getAllResponseHeaders()
bug。尝试console.log(response.headers())
查看整个集合。顺便说一句,这是另一个域上的JSONP请求吗?这是另一个域上的post请求。日志:Object{content type:“text/html;charset=UTF-8”}
如果这是一个请求,您应该将目标服务器配置为也返回Access Control Allow Headers
以指示浏览器允许来自其他域的JavaScript读取某些头。非常感谢我所需要的+谢谢你。在网络面板中看到它是如此令人惊讶,但在角度代码中却看不到。现在说得通了。我试试看。嗯……有时P
header('Access-Control-Expose-Headers: AuthToken, AnotherCustomHeader');
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Expose-Headers" value="AuthToken"/>
</customHeaders>
</httpProtocol>
</system.webServer>