ASP.NET MVC无法保存cookies?

6
为什么我的global.asax中的Session_Start方法无法保存cookie?
//new anon user:

var authCookie = new HttpCookie("user-id", string.Format("{0}-{1}", regiserAccountResponse.UserName, regiserAccountResponse.Key))
{
    Expires = DateTime.MaxValue,
    Domain = "domain.com",
    Secure = true,
    HttpOnly = true
};

//create the new users cookie - there's no need to call RegisterNewUserSession as this is done in the same call
HttpContext.Current.Response.SetCookie(authCookie);

1
你是如何检测是否已经保存的?你使用Wireshark查看它是否正在下载吗?你修复了域和安全位以反映现实吗? - Jon Skeet
我应该在准备部署之前将域留空吗?还是应该使用本地主机名直到我部署为止? - user156888
1
尝试将其完全删除。毕竟你不是在为“domain.com”提供服务,对吧?我不太懂cookies,但这些设置肯定是错的... - Jon Skeet
谢谢Jon - 我删除了安全和域属性,现在似乎可以工作了 - 如果你把这个加到答案里,我会标记为正确的 :) - user156888
2个回答

6

如果您想将cookie限制在网站的特定部分中,只需指定域即可。仅当cookie处于正确范围内时,它才会包含在请求中。

通过将域设置为"domain.com",您表示cookie仅适用于"domain.com",因此您无法从localhost(或任何其他域)检测到它。

您还会注意到,如果您尝试从非自己的域发送cookie给浏览器,则浏览器将其丢弃。


谢谢Steve!都对了 - 看起来现在它正在工作,所以一切都很好... :) - user156888
Svet svet baby. 希望新工作一切顺利。 - Fenton

0

iOS现在非常热衷于尽快废除无域cookie,因此,虽然接受的答案说“只有在您想将cookie限制在网站的特定部分时才需要指定域”,但我认为这不是真的。您需要设置一个域。

以下代码片段将从本地到生产环境都可以使用:

    private static HttpCookie CreateCookie(string name, string value)
    {
        return new HttpCookie(name, value) { Path = "/", Expires = DateTime.UtcNow.AddYears(1), Domain = Request.Url.Host };
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接