Uso web.py, que internamente utiliza la clase cookie.SimpleCookie
para cargar las cookies entrantes desde el navegador del usuario.CookieError: valor de clave ilegal
De vez en cuando, me sale excepciones como:
...
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
El carácter ofensivo parece ser la barra inclinada (/
), que, según mi lectura de RFC 2109 (cookies) y RFC 2068 (HTTP 1.1) debe ser no permitido, así que está bien.
No configuro esta cookie, y no estoy seguro de por qué o cómo se configuró para mi dominio (¿un proxy, quizás?), Pero eso es irrelevante; el problema más grande es que simplecookie falla mucho cuando se encuentra con esta cookie y devuelve un error al usuario.
Entonces, mi pregunta es: ¿hay alguna manera de pedir SimpleCookie
simplemente ignorar las cookies que no son válidas, pero devolver el resto? No pude encontrar nada obvio en los documentos para hacer esto.
¿No puede simplemente capturar la excepción CookieError? – GWW
Puedo (y debo), pero como es una excepción, no puedo acceder a las otras cookies, incluida nuestra cookie de sesión. Y las solicitudes posteriores aún contendrán la misma cookie que causó el error. Además, si proviene de un proxy, intentarlo será en vano, ya que el proxy simplemente lo volverá a configurar la próxima vez. – dcrosta