Używam klasy web.py, która wewnętrznie używa klasy cookie.SimpleCookie
do ładowania plików cookie przychodzących z przeglądarki użytkownika.CookieError: Nielegalna wartość klucza
Czasami otrzymuję wyjątki jak:
...
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
Charakter wykraczająca wydaje się być ukośnik (/
), które, według mojego czytania RFC 2109 (cookies) i RFC 2068 (HTTP 1.1) powinny być niedozwolone, więc jest OK.
Nie ustawiam tego ciasteczka i nie jestem pewien, dlaczego i jak zostało ustawione dla mojej domeny (być może proxy?), Ale to nie ma znaczenia; Większym problemem jest to, że simplecookie bardzo się nie udaje po napotkaniu tego pliku cookie i zwraca błąd użytkownikowi.
Moje pytanie brzmi: czy istnieje sposób, aby poprosić o usunięcie plików cookie, które są nieważne, ale zwrócić resztę? Nie mogłem znaleźć niczego oczywistego w dokumentach, aby to zrobić.
Nie możesz po prostu uchwycić wyjątku CookieError? – GWW
Mogę (i powinienem), ale ponieważ jest to wyjątek, nie mogę uzyskać dostępu do innych plików cookie, w tym naszego pliku cookie sesji. Kolejne żądania będą nadal zawierać ten sam plik cookie, który spowodował błąd. Co więcej, jeśli pochodzi z serwera proxy, próba jego rozbrojenia prawdopodobnie będzie daremna, ponieważ serwer proxy po prostu ponownie ustawi go następnym razem. – dcrosta