【问题标题】:ASP.NET MVC cookies not saving?ASP.NET MVC cookie 不保存?
【发布时间】:2011-05-16 05:00:39
【问题描述】:

为什么这个 cookie 没有保存在我的 global.asax 的 Session_Start 方法中?

//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);

【问题讨论】:

  • 你如何检测它是否真的被保存了?您是否使用过 Wireshark 来查看它是否正在下降?您是否修复了域和安全位以反映现实?
  • 在我准备好部署之前是否应该将域留空?还是在我部署之前应该是本地主机?
  • 尝试完全删除它。这不像您真的在为“domain.com”服务,是吗?我不能说我对 cookie 了解多少,但这些设置看起来肯定是错误的......
  • 感谢 jon - remd 安全和域道具,它现在似乎可以工作了 - 如果你将它添加到答案中,我会将其标记为正确 :)

标签: c# asp.net-mvc cookies


【解决方案1】:

如果您想将 cookie 限制在您网站的特定部分,您只需指定域。只有在正确范围内的 cookie 才会包含在请求中。

通过将域设置为“domain.com”,您是说该 cookie 仅对“domain.com”可用,因此您不会从 localhost(或除 domain.com 之外的任何其他域中检测到它)。 com")。

您还会注意到,如果您尝试从您自己的域以外的域向浏览器发送 cookie,浏览器会将其装箱。

【讨论】:

  • 谢谢史蒂夫!两者都正确 - 看起来它现在正在工作,所以一切都很好...... :)
  • Svet svet 宝贝。希望新工作顺利。
【解决方案2】:

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

以下 sn-p 将从本地工作到生产:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2017-04-30
    • 2011-08-18
    • 2012-11-03
    • 2012-08-31
    • 2012-01-19
    • 2011-02-12
    相关资源
    最近更新 更多