更友好的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中实现。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误