2017-04-20 37 views
0

我正在對我的API執行一個http請求,該應用程序應該使用Set-Cookie Header將兩個Cookie發送給我。C#WebApi + Angular 4 Set-Cookie不保存cookies

似乎cookie正確地發送回該初始請求,但它們不保存在Chrome中,因此以後請求不發送cookie。

我的初始化響應頭:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:content-type 
Access-Control-Allow-Origin:http://localhost:4200 
Cache-Control:no-cache 
Content-Length:0 
Date:Thu, 20 Apr 2017 09:25:45 GMT 
Expires:-1 
Pragma:no-cache 
Server:Microsoft-IIS/8.0 
Set-Cookie:ASP.NET_SessionId=vpt0f3m4jp2gwghm1mmrxyhm; path=/; HttpOnly 
Set-Cookie:ARRAffinity=ccebcfbd458447f3ab209749a770ad1f93d4b4c907a7cac9ef717d5fbf543fe3;Path=/;Domain=xxx 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 

但沒有什麼是存儲在存儲的cookie的Chrome。

難道從

Expires:-1 

感謝排在前進!

回答

1

我想你的C#後端運行在不同於你的Angular應用程序的端口上。 Cookie不在同一主機的不同端口之間共享。 Chrome會顯示適用於當前標籤網址的Cookie,這是Angular應用程序。所以你不能在那裏看到你的後端cookie。

您可以檢查從Angular應用程序到C#後端的XHR請求頭,它們應該包含指定的Cookie(ASP.NET_SessionId,ARRAffinity)。

+0

它更加複雜:我在localhost和Azure後端運行我的角度應用程序。但我明白這一點,所以我怎樣才能將這些cookie保存在我的Angular App中?用ngx-cookie來做到這一點很難嗎? –

+0

所以情況也是如此 - 不同的主機不共享cookie。 –

+0

爲什麼在Angular應用程序中需要來自Azure的Cookie? –