Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $http响应拦截器标头_Javascript_Angularjs_Angular Http - Fatal编程技术网

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>