更友好的rfc 6265兼容cookie解析器/呈现器
cookies的Python项目详细描述
这是干什么用的?
py是一个用于处理http cookies的python模块:解析和 呈现“cookie:”请求头和“set cookie:”响应头, 以及公开一个方便的api来创建和修改cookie。可能是 用于替换python的cookie.py(又名http.cookie s)。
功能
根据出色的新RFC 6265进行渲染 (而不是使用与 不切实际,非常陈旧的RFC,大家都忽略了)。使用URL编码 默认情况下表示非ascii,就像许多其他语言的库一样
自由解析,包含许多关于cookie.py barfing的抱怨 可可靠解析的常见cookie格式(例如搜索“cookie” 关于python问题跟踪程序)
有据可查的代码,有来自RFC的章节 (而不是武断的,无证的决定和巨大的魔法表 值,如您在cookie.py中看到的)。
测试覆盖率为100%,具有更全面的测试套件 比Cookie.py
与以下Python版本兼容的单一源代码: 2.6、2.7、3.2、3.3和Pypy(2.7)。
更干净,不那么令人惊讶的API:
# old Cookie.py - this code is all directly from its docstring >>> from Cookie import SmartCookie >>> C = SmartCookie() >>> # n.b. it's "smart" because it automatically pickles Python objects, >>> # which is actually quite stupid for security reasons! >>> C["rocky"] = "road" >>> C["rocky"]["path"] = "/cookie" >>> # So C["rocky"] is a string, except when it's a dict... >>> # and why do I have to write [""] to access a fixed set of attrs? >>> # Look at the atrocious way I render out a request header: >>> C.output(attrs=[], header="Cookie:") 'Cookie: rocky=road' # new cookies.py >>> from cookies import Cookies, Cookie >>> cookies = Cookies(rocky='road') >>> # Can also write explicitly: cookies['rocky'] = Cookie['road'] >>> cookies['rocky'].path = "/cookie" >>> cookies.render_request() 'rocky=road'
易于定制、扩展和重用其部件。 与cookie.py不同,它不会将所有实现锁定在自己的类中 (强迫你写丑陋的包装,比如django,trac,werkzeug/flask,web.py) 而龙卷风也不得不这么做)您可以使用 参数而不是子类包装器你可以插入你自己的解析器, 新的或现有Cookie属性的渲染器和验证器。你可以 在dict中呈现数据。您可以很容易地使用底层命令 或者甚至为您自己的解析器或项目提升解析器的regexp。他们 有很好的文档记录,并且直接与RFC相关,所以您确切地知道 你得到了什么,为什么这是麻省理工学院的执照 你想要什么(但我想知道你从中得到了什么好处!)
一个文件,如果你喜欢的话,你可以把cookies.py放到你的项目中
麻省理工学院的许可证,所以你可以在任何你想使用它没有字符串
这不该做的事
虽然这是一个很好的处理cookies的模块,但它不是 甚至尝试执行以下任何操作:
- 保持与cookie.py的向后兼容性,这意味着 继承其混乱和错误
- 实施RFCS2109或2965,这几乎一直被忽略 所有人,现在也都过时了
- 处理来自糟糕的遗留应用程序的所有可能的输出,而不是 可以在没有大量静默数据丢失和损坏的情况下执行 不过,解析器确实尽可能自由化,否则)
- 提供在cookie值中存储pickled python对象的方法 (这是一个很大的安全漏洞)
这与python中的cookielib(http.cookiejar)模块没有竞争 标准库,专门用于实现cookie存储和 在http客户端(如浏览器)中的类似行为。Cookielib做的事 这不是:
- 写入或读取浏览器的cookie存储或其他专有 在文件中存储cookie数据的格式
- 处理浏览器/客户端逻辑,比如决定发送哪些cookie或 丢弃等。
如果你正在寻找一个cookie库,但是这个库和cookielib都没有 有帮助的是,您还可以考虑在webob或both中实现。