【问题标题】:Can't get all response headers from angular 2 with cors无法使用 cors 从 angular 2 获取所有响应标头
【发布时间】:2017-03-21 03:44:50
【问题描述】:

我有一个 Angular 2 (2.1.2) 客户端,ASP.NET Core 作为启用 CORS 的后端。普通 API(GET、POST、DELETE、...)工作正常,我的问题是当我尝试从响应中检索标头时;特别是Content-Disposition。这是我尝试使用 Ajax 获取文件内容时的屏幕截图。

如您所见,在 GET 响应标头中有一个名为 Content-Disposition 的标头,但是当我尝试从 Angular http 服务中检索它时,它却不见了。

快速说明,我只在开发中使用 CORS。

【问题讨论】:

  • 您的服务器可能丢失了Access-Control-Allow-Headers:content-disposition w3.org/TR/2014/REC-cors-20140116/…
  • 我还是 ASP.NET Core 的新手,但是我已经像 options.AddPolicy("AllowAll", builder => builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin()) 这样启用了 CORS,我不确定我是否遗漏了什么。
  • 不包括AllowAnyHeaders。我不知道 ASP.NET,我只知道 Angular2。
  • 我强制在每个回复中添加Access-Control-Allow-Headers:"Content-Disposition",但仍然没有运气。
  • Ups,应该是access-control-expose-headers

标签: angular cors


【解决方案1】:

您需要配置服务器以便它添加响应标头

access-control-expose-headers: content-disposition

否则浏览器不会使标头对 JavaScript 可用。

【讨论】:

【解决方案2】:

更准确地说,在 ASP.NET Core 中,您可以在 Startup 类中的 Configure 方法中像这样配置它:

app.UseCors(x =>
{
     x.WithExposedHeaders("Content-Disposition");
     // .. omitted
});

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 2018-04-19
    • 1970-01-01
    • 2015-10-09
    • 2019-03-04
    • 2017-05-25
    • 2013-08-27
    • 2019-09-08
    • 2021-03-10
    相关资源
    最近更新 更多