dcr*_*sta 6 python cookies web.py
我使用web.py,它在内部使用cookie.SimpleCookie该类来加载从用户浏览器传入的cookie.
偶尔,我得到例外:
...
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/Cookie.py", line 455, in set
raise CookieError("Illegal key value: %s" % key)
CookieError: Illegal key value: SinaRot/g/news.sina.com.cn
Run Code Online (Sandbox Code Playgroud)
违规字符似乎是正斜杠(/),根据我对RFC 2109(cookies)和RFC 2068(HTTP 1.1)的读取, 应该是不允许的,所以没关系.
我没有设置这个cookie,我不确定为什么或如何设置我的域(代理,也许?),但这是无关紧要的; 更大的问题是,当遇到这个cookie时,simplecookie会失败,并向用户返回错误.
所以,我的问题是:有没有办法要求SimpleCookie简单地忽略无效的cookie,但返回其余的?我在文档中找不到任何明显的东西来做到这一点.
我的 webpy 应用程序在 Firefox 浏览器中经历了CookieError: Illegal key value: )|utmcmdGoogle Analytics 设置。为了解决这个问题,我发出重定向尝试设置正确的值。
def myinternalerror():
try:
web.cookies()
except CookieError:
if not "cookie_err" in web.input():
web.setcookie("__utmz", None, domain=web.ctx.host)
raise web.seeother(web.changequery(cookie_err=1))
return web.internalerror(render.site.e500())
if not web.config.debug:
app.internalerror = myinternalerror
Run Code Online (Sandbox Code Playgroud)