4

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

4

2 回答 2

8

你是对的,从 的文档字符串或在线文档中肯定不明显setcookie(),但它就在某个地方

的第三个(也是可选的)参数web.setcookie()“expires”允许您设置希望 cookie 何时过期。任何负数都会立即使 cookie 过期。

例如,下面是我们在退出代码中所做的一部分(删除用户的会话 cookie):

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

请注意,您必须删除具有与您设置的相同域和安全标志的 cookie,否则它不会被删除。此外,对于 web.py,您通常将web.setcookie()其用作web.webapi.setcookie().

于 2011-05-06T13:07:20.317 回答
-1

web.py 似乎没有办法删除 cookie。如果您仔细阅读说明书中的文档它会很稀疏,甚至不涉及路径之类的内容(因此您可以将 cookie 设置到域中的特定位置)。所以我们必须转向源代码。在此,尽我所能,我找不到任何对删除、删除或撤销 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' 设置为'test' 值。在下一次刷新时,它会将值更改为“test2”。在下一次刷新时,它再次将值设置为“测试”,但也会使 cookie 过期。这应该会导致下一次刷新显示“我放火烧雨”。

于 2014-04-06T11:41:14.833 回答