【问题标题】:cookie doesn't get created on IE and Chromecookie 不会在 IE 和 Chrome 上创建
【发布时间】:2012-08-06 21:05:21
【问题描述】:

我们有一个需要 cookie 才能启动的 aspx 页面。在重定向到该页面之前,我们创建了 cookie,它在响应中给出,然后重定向到该页面。

Form form = new Form { 
            FormID = dalObject.FormID, 
            PageName = dalObject.PageName, 
            ViewPageName = dalObject.ViewPageName };

        HttpCookie cookie = new HttpCookie("FormCookie");
        cookie.Expires = DateTime.Now.AddMinutes(1);

        if (dalObject.FormID==(int)Forms.SP_APP_FORM)
        {
            cookie.Values.Add("ApplicationRepositoryID",GetEncryptedToken(applicationRepositoryID.ToString()));
            cookie.Values.Add("UserDirectoryID", GetEncryptedToken(userDirectoryID.ToString()));
            cookie.Values.Add("FormID", GetEncryptedToken(dalObject.FormID.ToString()));

            if (applicationFormID.HasValue)
                cookie.Values.Add("ApplicationFormID", GetEncryptedToken(applicationFormID.ToString()));
        }
        form.PageCookie = cookie;
        return form;

问题在于,在开发环境中它工作得很好,在生产中它也工作(对他们来说),但是如果我们尝试生产站点,它就不起作用(从我们的开发计算机上)。我们怀疑 cookie 没有被创建。这发生在开发的 3 台计算机中的 2 台上。在其中一个上它正在工作。 我们尝试删除cookies,清除缓存,但没有结果。

有什么想法吗? 谢谢

【问题讨论】:

  • 您是否 100% 确定在这些机器上启用了 cookie?要检查 Chrome,请转到设置 > 高级 > 内容设置 > Cookie
  • 是的,cookies 已启用

标签: asp.net cookies cross-browser


【解决方案1】:

我以前在我们的网站上看到过这个。在我们的案例中,客户端和服务器时钟明显不同步。服务器设置到期时间,客户端根据自己的时钟检查它,如果超过(在你的情况下)一分钟太快,那么它立即到期。

我们将 cookie 的到期时间设置得更远(比如一周或一个月),然后只在服务器上进行检查(因为它应该自我检查)。基本上,我们在 cookie 中添加了额外的数据(手动到期时间),服务器可以用来进行检查。如果您认为它已过期(您设置的一分钟),则服务器将删除(并忽略)它发送的 cookie。

我不知道这是否是解决问题的最佳方法,但它对我们有用。

顺便说一下,我们只在 IE 上发现了这个问题。

【讨论】:

  • 对,但是在我们的一台开发机器上,在同一个局域网中(我们有相同的日期时间),它可以工作,而在其他两台机器上却不行......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2014-10-24
  • 2011-12-29
  • 2011-02-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多