消失的会话cookie - django

时间:2014-06-12 15:19:00

标签: django session cookies

我的一个网站有一个奇怪的问题。该网站使用Django,但我不知道这是Django问题,还是浏览器问题或其他问题。

通常,当用户访问我的网站时,会设置浏览器会话cookie。然后,当用户决定登录时,他可以设置“记住我”。使cookie更改为固定过期cookie(1周)的选项。我认为这是一种典型的行为。

问题是会话cookie有时会完全消失,或者 - 更奇怪的是 - 它被旧的浏览器会话cookie取代。

我在我的应用中添加了一个中间件,用于监控所有请求和响应并将其记录到文件中。这样我可以给出以下示例:

  1. 用户在17:29:13访问我的网站 - 我的应用程序发回一个cookie: Set-Cookie:sessionid = o1idvjhnf2dgx0c1df7p7pyth1ya1byc;路径= /

  2. 然后他在17:30:36登录 - 再次发送一个新的cookie: Set-Cookie:sessionid = bjjsxcqceghlx7521vikq3kob1d1fidy;到期= 2014年6月18日星期三17:30:36 GMT;最大年龄= 604800;路径= /

  3. 他积极地在我的网站上花了一些时间,然后突然在17:51:13发出请求,将sessionid cookie设置为o1idvjhnf2dgx0c1df7p7pyth1ya1byc。所有其他cookie(csrftoken,__ utmXXX)保持不变。只有sessionid恢复到旧的价值,IMO应该在很长一段时间内被遗忘。 并且从用户的POV中他已被注销。

  4. 据我所知,这个问题出现在各种浏览器中 - 上面这个是在Firefox中,但我有一个IE11用户抱怨这个问题(随机丢失会话)。

    如上所述 - 会话cookie并不总是恢复为浏览器会话cookie - 有时它会消失,而所有剩余的cookie(csrftoken等)都保持不变。

    我无法在计算机上重现此问题,因此我在此问您是否遇到过此类问题并提出任何解释。

    我使用Django 1.5,主要是标准会话设置,除了: SESSION_EXPIRE_AT_BROWSER_CLOSE = True

0 个答案:

没有答案