2016-11-07 94 views
4

我有一個Angular 2(2.1.2)客戶端,ASP.NET Core作爲啓用了CORS的後端。正常的API(GET,POST,DELETE,...)工作正常,我的問題是當我嘗試從響應中檢索標題時;特別是Content-Disposition。這是當我嘗試使用Ajax獲取文件內容時的屏幕截圖。無法從角度2獲得所有響應標題與cors

OPTIONS request

GET request

正如你可以看到有一個叫Content-Disposition在GET響應頭報頭,但是當我嘗試從角http服務檢索它丟失了。

快速提示,我只在開發中使用CORS。

+0

你的服務器可能缺少'訪問控制 - 允許 - 標題:內容處置https://www.w3.org/TR/2014/REC-cors-20140116/#access-control-allow-headers-response-header –

+0

我對ASP.NET Core仍然很陌生,但我有CORS這樣啓用'options.AddPolicy(「AllowAll」,builder => builder.AllowAnyMethod()。AllowAnyHeader()。AllowAnyOrigin())',我不知道我是否缺少一些東西。 – Ayman

+0

不包含'AllowAnyHeaders'。我不知道ASP.NET,我只知道Angular2。 –

回答

9

您需要配置的服務器,這樣就增加了響應頭

access-control-expose-headers: content-disposition 

否則瀏覽器不會使頭可用於JavaScript。

+0

任何地方我可以閱讀更多關於此? –

+1

搜索CORS –

+0

謝謝我發現了所有CORS頭文件的很好的描述 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Access-Control-Expose-Headers –

2

爲了更精確,在ASP.NET核心,你可以在你Startup類配置像這樣,在Configure方法:

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