如何在web.py中删除/取消设置cookie

时间:2011-03-31 17:30:53

标签: python cookies web.py

在web.py中,您可以使用web.webapi.cookies()访问请求的Cookie,并且可以使用web.webapi.setcookie(...)设置Cookie的值。文档不清楚一个如何删除一个cookie,但是 - 你只是setcookie的值为无吗?

2 个答案:

答案 0 :(得分:8)

你是对的,从setcookie()的文档字符串或在线文档中肯定不是很明显,但它是there somewhere

  

web.setcookie()的第三个(和可选)参数“expires”允许您设置Cookie何时到期。 任何负数都会立即使Cookie失效。

例如,这是我们在注销代码中执行的操作的一部分(删除用户的会话cookie):

    web.setcookie('session', '', expires=-1, domain=session_cookie_domain)

请注意,您必须删除具有相同域和安全标志的cookie,否则它将不会删除。另外,对于web.py,您通常使用web.setcookie()作为web.webapi.setcookie()的快捷方式。

答案 1 :(得分:-1)

web.py似乎没有办法删除cookie。如果您浏览cookbook中的文档,它很稀疏,甚至不会谈论路径之类的内容(因此您可以将Cookie设置为域中的特定位置)。所以我们必须转向sourcecode。在这个,尽可能尝试,我找不到任何删除,删除或撤销cookie方法的引用。

话虽如此,经过测试,使用None来过期cookie是安全的。这是一个快速的网络应用程序,可以显示它。

import web

web.config.debug = False
urls = (
        '/', 'index'
        )

class index:
    def GET(self):
        c = web.cookies().get('test1')
        if c:
            if c=="test":
                print 'this is ' + c
                web.setcookie('test1', 'test2', domain = 'example.com')
            else:
                print c
                web.setcookie('test1', 'test', domain = 'example.com' expires = None)
            return c
        else:
            print "didnt find cookie"       
            web.setcookie('test1', 'test', domain = 'example.com' expires='')
            return 'I set fire to the rain'

app = web.application(urls, globals())

if __name__ == "__main__":
    app.run()

在此,Web应用程序首先检查cookie是否存在。如果它没有设置cookie' test1'用值'测试'。在下次刷新时,它会将值更改为' test2'。在下一次刷新时,它会再次将值设置为' test'但也会使cookie过期。这应该导致下一次刷新显示“我着火了雨”#。