微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 未设置localhost cookie

我正在尝试在我的应用程序中设置一个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

解决方法

我非常怀疑localhost不是有效的域名,所以Chrome拒绝它.如果您只是从Set-Cookie中删除“domain = localhost”,那么它将起作用,Chrome会将域名分配给localhost.

我个人会创建一个本地域名,如“test.dev”,并将其添加到您的Windows主机文件,127.0.0.1 test.dev

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐