Ich versuche, einen Cookie in meiner Anwendung zu setzen.localhost Cookies nicht gesetzt
Hier ist der Code, der das Cookie setzt:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcUFJPSkVDVFNcU2Ftc2tpcC5TZXJ2aWNlV2ViTmV3XFNhbXNraXAuQXV0aEFQSVxTYW1za2lwLkF1dGhBUElcbG9naW4=?=
X-Powered-By: ASP.NET
Date: Wed, 18 Feb 2015 11:58:07 GMT
Content-Length: 8019
Beachten Sie die folgenden Header:
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
Wenn jedoch
public HttpResponseMessage LogIn(UserLoginVM user)
{
// Do login stuff
var cookie = new CookieHeaderValue("STUPID-COOKIE", "12345");
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
cookie.HttpOnly = true;
// Get user's profile
HttpResponseMessage res = Request.CreateResponse<UserProfileVM>(HttpStatusCode.OK, profile);
res.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return res;
}
Die Antwort vom Server ist Folgendes Ich gehe unter "Cookies" im Tab "Ressourcen" in Chrome, nichts ist eingestellt. Auch wenn ich eine Anfrage an den Server sende, ist kein Cookie in den Headern.
Hier ist der Code, der das Cookie lautet:
CookieHeaderValue cookie = Request.Headers.GetCookies("STUPID-COOKIE").FirstOrDefault();
cookie
Variable immer null ist.
Meine Anwendung läuft auf http://localhost:53998 und der Authentifizierungsdienst läuft auf http://localhost:60858
Mein Chrome-Version ist 40.0.2214.111.
Hier ist ein GIF demonstriert das Problem: http://i.imgur.com/q7lkXBz.gif
Edit: Dies scheint Chrome nicht-spezifisch. Dies funktioniert auch nicht mit FireFox (v35). GIF: http://i.imgur.com/ZewnEtc.gif
EnableCorsAttribute ("*", "*", "*") ist extrem gefährlich und sollte nie gemacht werden. Sie verwerfen nahezu alle Schutzmechanismen derselben Herkunft und öffnen Nutzer Ihrer App für eine Vielzahl von Cross-Site-Angriffen, einschließlich solcher, die Browser-Header-Fälschungen beinhalten. Sie sollten genau angeben, welche Domänen, Header und Methoden Sie zulassen. –