Gau*_*aui 7 cookies asp.net-mvc localhost
我正在尝试在我的应用程序中设置一个cookie.
这是设置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;
}
服务器的响应如下:
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
请注意以下标题:
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
但是,当我在Chrome中的"资源"标签中的"Cookie"下,没有设置任何内容.此外,当我向服务器发送请求时,标题中没有cookie.
这是读取cookie的代码:
CookieHeaderValue cookie = Request.Headers.GetCookies("STUPID-COOKIE").FirstOrDefault();
cookie 变量始终为null.
我的应用程序在http:// localhost:53998上运行,身份验证服务在http:// localhost:60858上运行
我的Chrome版本是40.0.2214.111.
这是一个展示问题的GIF:http: //i.imgur.com/q7lkXBz.gif
编辑:这似乎与Chrome不具体.这对FireFox(v35)也不起作用.GIF:http://i.imgur.com/ZewnEtc.gif
Gau*_*aui -2
我终于设法解决了这个问题。
在 API 的响应中,我必须添加Access-Control-Allow-Credentials: true标头,或者在 WebApiConfig 类中添加以下内容:
public static void Register(HttpConfiguration config)
{
    var cors = new EnableCorsAttribute("*", "*", "*");
    cors.SupportsCredentials = true;
    config.EnableCors(cors);
}
然后我必须在客户端启用它,方法是将对象withCredentials中的属性设置XMLHTTPRequest为true. 在 AngularJS 应用程序配置功能中,您可以执行以下操作:
$httpProvider.defaults.withCredentials = true;
另外,对于 Chrome,我必须省略Domain(或将其设置为 null)。
希望这可以帮助其他为此苦苦挣扎的人。
| 归档时间: | 
 | 
| 查看次数: | 4324 次 | 
| 最近记录: |