我使用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

令人反感的字符似乎是正斜杠(/),根据我对RFC 2109(cookies)和RFC 2068(HTTP 1.1)的阅读,不应使用斜杠,这样就可以了。

我没有设置该Cookie,也不确定为什么要为我的域(或代理,也许是它)设置它,但是那是无关紧要的。更大的问题是,当simplecookie遇到此cookie时,它会严重失败,并向用户返回错误。

因此,我的问题是:是否有任何方法可以让SimpleCookie忽略无效的cookie,但返回其余的cookie?我找不到任何明显的文档来做到这一点。

最佳答案

这对我有用。

def get_cookies():
    import Cookie
    ans = Cookie.SimpleCookie()
    for bit in os.environ.get('HTTP_COOKIE', '').split('; '):
        try:
            ans.load(bit)
        except Cookie.CookieError:
            pass
    return ans

关于python - CookieError : Illegal key value,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7148458/

10-10 05:45