Io uso web.py, che utilizza internamente la classe cookie.SimpleCookie
per caricare i cookie in arrivo dal browser dell'utente.CookieError: valore chiave illegale
Di tanto in tanto, ottengo eccezioni come:
...
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
Il carattere offensivo sembra essere la barra (/
), che, secondo la mia lettura dei RFC 2109 (biscotti) e RFC 2068 (HTTP 1.1) dovrebbe essere non consentito, quindi va bene.
Non ho impostato questo cookie e non sono sicuro del perché o del modo in cui è stato impostato per il mio dominio (un proxy, forse?), Ma questo è irrilevante; il problema più grande è che simplecookie fallisce quando incontra questo cookie e restituisce un errore all'utente.
Quindi, la mia domanda è: c'è un modo per chiedere a SimpleCookie
di ignorare semplicemente i cookie che non sono validi, ma restituire il resto? Non ho trovato nulla di ovvio nei documenti per farlo.
Non riesci a rilevare l'eccezione CookieError? – GWW
Posso (e devo), ma poiché si tratta di un'eccezione, non posso accedere agli altri cookie, incluso il nostro cookie di sessione. E le richieste successive continueranno a contenere lo stesso cookie che ha causato l'errore. Inoltre, se proviene da un proxy, tentare di disinserirlo sarà probabilmente invano, poiché il proxy lo reimposterà appena la prossima volta. – dcrosta