2017-04-20 9 views
0

Ich mache eine HTTP-Anfrage an meine API, die mir zwei Cookies mit dem Set-Cookie Header zurücksenden soll.C# WebApi + Angular 4 Set-Cookie speichert keine Cookies

Es scheint, dass der Cookie für diese Init-Anfrage korrekt zurückgesendet wird, aber nicht in Chrome gespeichert wird. Bei späteren Anfragen werden die Cookies nicht gesendet.

Meine Init-Response-Header sind:

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 

Aber nichts ist in der Cookies Lagerung von Chrome gespeichert.

Könnte es kommt von dem

Expires:-1 

Vielen Dank im Voraus!

Antwort

1

Ich denke, Ihr C# -Backend läuft an einem anderen Port als Ihre Angular-Anwendung. Cookies werden nicht zwischen verschiedenen Ports desselben Hosts geteilt. Chrome zeigt Cookies an, die für die aktuelle Tab-URL gültig sind. Dies ist die Angular-Anwendung. Sie können also Ihre Backend-Cookies dort nicht sehen.

Sie können Ihre Header von XHR-Anfragen von der Angular-Anwendung zum C# -Sendeditor überprüfen, sie sollten die angegebenen Cookies enthalten (ASP.NET_SessionId, ARRAffinity).

+0

Es ist noch komplizierter: Ich leite meine eckige App in localhost und das Back-End in Azure. Aber ich verstehe den Punkt, also wie kann ich diese Cookies in meiner Angular App speichern? Mach es hart mit ngx-cookie? –

+0

Es ist also die gleiche Situation - verschiedene Hosts teilen keine Cookies. –

+0

Warum benötigen Sie die Cookies von Azure in Ihrer Angular App? –