繁体   English   中英

Angular 2:无法访问http请求中的响应标头

[英]Angular 2: Can't access response headers in a http request

我正在使用angular2-http(alpha.44)模块从REST Api检索数据。 我无法弄清楚如何访问响应的标题映射中的信息,我需要一个特定的字段。 例:

var req = new Request({
  url: `localhost/api/products`,
  method: RequestMethods.Get
});

this.http.request(req).subscribe(
  res => {
    // Can't access the headers of the response here.... res.headers is empty
    },
  error => { ... },
  _ => {}
);

奇怪的是,如果我在浏览器的开发工具中检查网络流量,则会出现响应头...

该解决方案已在已经链接的问题中,但在稍后的评论中: https//github.com/angular/angular/issues/5237#issuecomment-239174349

除了一些通用标头之外,只有列为Access-Control-Expose-Headers标头值的标头才会在Angular2中映射(也可能与其他标头一起映射)。 这必须在后端添加。

对我而言,需要一个多小时才能找到Authorization标题。 我认为这不是自定义标题,但确实如此。

在PHP中调用类似这样的东西: header("Access-Control-Expose-Headers: Authorization, X-Custom-header");

如果您使用Laravel作为barryvdh/laravel-cors后端,请在config/cors.php文件中进行此设置。

关于在github上打开的问题已经存在一个问题: -

https://github.com/angular/angular/issues/5237#issuecomment-156059284

请检查一下,因为有人发布了一个解决方法。

UPDATE

棱角分明的团队已经解决了这个问题。

我发现此链接很有用: https//developer.mozilla.org/es/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

在哪里我必须通过添加标题的实际内容来指定我必须从我的服务器本身向最终用户公开必要的标题!

// Request headers you wish to expose
res.setHeader('Access-Control-Expose-Headers', 'your_desired_header, content-type');

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM