【问题标题】:Create a cookie that lasts until the browser is closed(Session Cookie?)创建一个持续到浏览器关闭的cookie(会话cookie?)
【发布时间】:2011-08-05 22:32:25
【问题描述】:

我熟悉在 Python 中分配、创建 cookie。但我不确定如何创建一个持续到当前浏览器会话关闭的 cookie(所以我有一种非常基本的方式来判断用户何时返回到我的网站)。

那么,当浏览器在 Python 中关闭时,我应该设置哪个 cookie 标头以确保 cookie 过期/删除?我应该使用 SimpleCookie 对象还是其他对象?

这个帖子说我在 PHP 中设置了 cookie_lifetime 标志/标头,但是对于 python 呢? http://bytes.com/topic/php/answers/595383-how-declare-cookie-will-destroy-after-browser-closed

这是否会创建一个在关闭浏览器时过期的 cookie?

cookie  = Cookie.SimpleCookie()
cookie["test"] = "MYTEST"
cookie["test"]['expires'] = 0 # or shd I set the max-age header instead?
print str(cookie) + "; httponly"

【问题讨论】:

  • 我觉得你根本不需要设置expires

标签: python browser cookies


【解决方案1】:

完全省略“过期”值,即不要将其设置为任何值。详情见Wikipedia entry

设置 Cookie:made_write_conn=1295214458;路径=/;域=.foo.com

[...]

第二个 cookie made_write_conn 没有过期日期,使其成为会话 cookie。用户关闭浏览器后将被删除

在 Python 中:

In [11]: from Cookie import SimpleCookie

In [12]: c = SimpleCookie()

In [13]: c['test'] = 'MYTEST'

In [14]: print c
Set-Cookie: test=MYTEST

【讨论】:

    【解决方案2】:

    麦克,

    你的答案在我看来是正确的。在 Morsel 对象上设置 "expires" = 0 应该可以满足您的要求。你测试过吗?

    看起来 IE 不支持 max-age:

    http://mrcoles.com/blog/cookies-max-age-vs-expires/

    【讨论】:

    • 是的,IE 不支持 max-age,但简单地排除过期(与 max-age 相同)应该让 SimpleCookie 创建一个会话 cookie,正如那篇文章所说,“如果你既不设置—cookie 将持续到您关闭浏览器"
    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2017-04-19
    • 1970-01-01
    • 2011-04-21
    • 2015-07-03
    • 2013-11-29
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多