您的位置:首页 > 编程语言 > Python开发

让python的Cookie.py模块支持:冒号做key

2010-11-19 15:54 465 查看
虽然Cookie的标准是不允许:冒号出现在key里面的,但是我们的开发人员是很可爱的,常常会让我们意想不到。

为了做好兼容性,只能选择兼容:冒号。

很简单,修改一下Cookie.Morsel

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""MorselHook
fix Cookie.CookieError: Illegal key value: ys-tab:entrance:e
"""

import Cookie
import string

_Morsel = Cookie.Morsel

class MorselHook(_Morsel):
"""
>>> import inspect
>>> (inspect.getargspec(MorselHook.set)[3])[0]
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-.^_`|~:"
>>> cookie = Cookie.SimpleCookie()
>>> cookie.load("ys-tab:entrance:e=abc; webpy_session_id=75eb60dcc83e2d902146af0bb7f47afe61fbd2b2")
>>> print cookie
Set-Cookie: webpy_session_id=75eb60dcc83e2d902146af0bb7f47afe61fbd2b2;
Set-Cookie: ys-tab:entrance:e=abc;
"""
def set(self, key, val, coded_val,
LegalChars=Cookie._LegalChars+':',
idmap=string._idmap,
translate=string.translate):
return super(MorselHook, self).set(key, val,
coded_val, LegalChars, idmap, translate)

Cookie.Morsel = MorselHook

# 在你需要使用到Cookie的地方先让上面的代码执行一遍

if __name__ == '__main__':
import doctest
doctest.testmod()


有爱

^_^ 希望本文对你有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: