Próbuję ustawić plik cookie w mojej aplikacji.ciasteczka localhost nie ustawione
Oto kod, który ustawia plik cookie:
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;
}
Odpowiedź z serwera jest następujący:
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
Wskazówka następujący nagłówek:
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
Jednak, gdy Przejdę do sekcji "Pliki cookie" na karcie "Zasoby" w przeglądarce Chrome, nic nie jest ustawione. Również podczas wysyłania żądania do serwera w nagłówkach nie ma pliku cookie.
Oto kod, który odczytuje plik cookie:
CookieHeaderValue cookie = Request.Headers.GetCookies("STUPID-COOKIE").FirstOrDefault();
cookie
zmienna jest zawsze zerowa.
Moja aplikacja jest uruchomiona na http://localhost:53998 a obsługa uwierzytelniania działa na http://localhost:60858
wersji My Chrome jest 40.0.2214.111.
Oto GIF wykazania problem: http://i.imgur.com/q7lkXBz.gif
Edit: To wydaje się być niespecyficzne Chrome. Nie działa to również w FireFox (v35). GIF: http://i.imgur.com/ZewnEtc.gif
EnableCorsAttribute ("*", "*", "*") jest wyjątkowo niebezpieczny i nigdy nie powinien być wykonywany. Wyrzucasz prawie wszystkie zabezpieczenia tego samego pochodzenia i otwierasz użytkowników swojej aplikacji w wielu różnych atakach między witrynami, w tym w przypadku fałszowania nagłówków przeglądarki. Powinieneś precyzyjnie określać domeny, nagłówki i metody, które akceptujesz. –