我使用web.py,它在内部使用cookie.SimpleCookie
类来加载从用户浏览器传入的Cookie。CookieError:非法密钥值
偶尔,我得到这样的例外:
...
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(饼干)和RFC 2068(HTTP 1.1)应不允许,所以没关系。
我没有设置这个cookie,我不确定它为什么或如何为我的域设置(代理,也许?),但这是不相关的;更大的问题是simplecookie在遇到这个cookie时会失败,并向用户返回一个错误。
所以,我的问题是:有什么办法要求SimpleCookie
简单地忽略无效的cookie,但返回其余的?我在文档中找不到任何明显的内容来执行此操作。
难道你不能只是赶上CookieError异常? – GWW
我可以(也应该),但因为它是一个例外,我无法访问其他cookie,包括我们的会话cookie。随后的请求仍将包含导致错误的相同Cookie。此外,如果它来自代理,试图解除它将很可能是徒劳的,因为代理将在下一次重新设置它。 – dcrosta