Angular 2 : how to get custom response headers (CORS issue)

标签 angular response-headers

为什么我无法从响应中访问 Angular2 中的所有 header ?

我有一个无法修改的旧版 Web 服务。 它在响应 header 中将一些重要信息发送回客户端。别问我为什么。这是废话。

enter image description here

我的代码是这样的:

      .subscribe((r: Response) => {
      var customHeader = r.headers.get("Database-Deleted");
      var allHeadersAsString = JSON.stringify(r.headers);

但响应似乎只包含几个 header ,而不是全部。

有人可以告诉我这是设计使然,并且无法访问它们吗? (或者更好:告诉我如何让它发挥作用)

更新

感谢上面的评论,我能够将其识别为 CORS 问题。其他问题的接受答案没有给我正确的线索。

谢谢!

最佳答案

这确实是一个CORS问题。谢谢n00dl3的评论!

如果服务器(在本例中是 C# WebAPI)允许显式公开自定义 header ,那么 Angular2 就允许我访问它们。

这个网站帮助了我: http://datawalke.com/c/webapi-owin-cors-and-custom-headers/

解决方案

为了进行测试,我能够允许所有来源并列出我需要的自定义 header 。

    var att = new EnableCorsAttribute("*", "*", "*");
    att.ExposedHeaders.Add("Database-Deleted");
    att.ExposedHeaders.Add("Database-AlreadyDeleted");
    att.ExposedHeaders.Add("Database-DryRun");
    att.ExposedHeaders.Add("Database-Inserted");
    att.ExposedHeaders.Add("Database-Updated");
    config.EnableCors(att);

关于 Angular 2 : how to get custom response headers (CORS issue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067069/

相关文章:

asp.net - 为什么不能通过 IIS7 中的 web.config 删除 "Server"响应 header ?

asp.net - 在没有 UrlScan 的情况下删除/隐藏/禁用 Azure/IIS7 中过多的 HTTP 响应 header

php - Laravel 5.1 中的数组到 CSV 文件下载

javascript - 如何从 jquery/javascript 中的响应头中获取读取数据

html - 当鼠标悬停在 html/CSS/angular/bootstrap 中时,扩展树的长文本行(嵌套的 HTML 列表)

angular - 如何在 Angular 5 中向 ng-select 添加 "select all"功能

angular - 使用 Angular2/AngularFire2 创建或增加一个值

angular - `angular` 如何修复此警告 `Emitted value instead of an instance of Error`

php - HTTP 状态代码 102 缺少响应 header

json - Angular2 http.post 和未定义的 req.body