【问题标题】:How to delete/unset a cookie in web.py如何在 web.py 中删除/取消设置 cookie
【发布时间】:2011-03-31 17:30:52
【问题描述】:

在 web.py 中,您可以使用web.webapi.cookies() 访问请求的 cookie,您可以使用 web.webapi.setcookie(...) 设置 cookie 的值。但是,文档并不清楚删除 cookie 的方式——你只是setcookie 的值为None 吗?

【问题讨论】:

    标签: python cookies web.py


    【解决方案1】:

    你是对的,从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() 的快捷方式。

    【讨论】:

      【解决方案2】:

      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' 设置为'test' 值。在下一次刷新时,它会将值更改为“test2”。在下一次刷新时,它再次将值设置为“测试”,但也会使 cookie 过期。这应该会导致下一次刷新显示“我放火烧雨”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-27
        • 2012-05-18
        • 2012-03-07
        • 2015-08-18
        • 2011-02-20
        相关资源
        最近更新 更多