CookieError:非法键值

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,但返回其余的?我在文档中找不到任何明显的东西来做到这一点.

And*_*min 0

我的 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)