localhost cookies not set
asp.net-mvc, cookies, localhost
Solution
I finally managed to solve this.
In the response from the API I had to add `Access-Control-Allow-Credentials: true` headers, or by adding the following in the WebApiConfig class:
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
}
Then I had to enable it on the client-side, by setting the `withCredentials` property in the `XMLHTTPRequest` object to `true`. In AngularJS app config function you can do the following:
$httpProvider.defaults.withCredentials = true;
Also, for Chrome, I had to omit the `Domain` (or set it as null).
Hope this helps others struggling with this.
Problem
I'm trying to set a cookie in my application. Here's the code that sets the 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; } ``` The response from the server is the following: ``` 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 ``` Notice the following header: ``` Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly ``` However, when I go under "Cookies" in "Resources" tab in Chrome, nothing is set. Also when I send a request to the server no cookie is in the headers. Here's the code that reads the cookie: ``` CookieHeaderValue cookie = Request.Headers.GetCookies("STUPID-COOKIE").FirstOrDefault(); ``` `cookie` variable is always null. My application is running on http://localhost:53998 and the authentication service is running on http://localhost:60858 My Chrome version is 40.0.2214.111. Here's a GIF demonstrating the problem: https://i.stack.imgur.com/86Xug.gif Edit: This seems to be non-specific to Chrome. This doesn't work on FireFox (v35) either. GIF: https://i.stack.imgur.com/yFuzd.gif