WSGI请求和响应对象
项目描述
WebOb 提供用于 HTTP 请求和响应的对象。具体来说,它通过封装 WSGI 请求环境和响应状态/头部/app_iter(体)来实现。
请求和响应对象为解析 HTTP 请求和构造 HTTP 响应提供了许多便利。这两个对象都是读写:因此,WebOb 也是创建 HTTP 请求和解析 HTTP 响应的好方法。
支持和文档
请访问 WebOb 文档网站 查看文档、报告错误和获取支持。
许可证
WebOb 在 MIT 许可证 下提供。
1.8.8 (2024-08-13)
安全修复
使用 WebOb 的 Response 对象将请求重定向到新位置,如果 Location 头部不是一个完整的 URI,可能会导致开放重定向。
请参阅 https://github.com/Pylons/webob/security/advisories/GHSA-mg3v-6m49-jhp3 和 CVE-2024-42353
感谢 Sara Gao 的报告
1.8.7 (2021-02-17)
错误修复
现在支持解压缩 deflate 编码的响应,数据以 zlib 容器打包。旧的、非标准的行为仍然支持。
1.8.6 (2020-01-21)
实验性功能
SameSite 的值现在包括一个新的选项“None”,这是在 https://tools.ietf.org/html/draft-west-cookie-incrementalism-00 中引入的新更改
请注意,较旧的客户端与此更改不兼容:https://www.chromium.org/updates/same-site/incompatible-clients,WebOb 默认不启用 SameSite 选项,因此这里没有向后不兼容的更改。
可以通过切换模块标志来禁用 SameSite 值的验证。这是为了应对不断发展的 Cookie 标准的未来变化。在 https://github.com/Pylons/webob/pull/407(最初扩展了允许的选项)中的讨论指出,浏览器 Cookie 实现细节的突然变化可能会再次发生。
2019 年 5 月,Google 宣布了其浏览器中隐私控制的新模型,这影响了 Cookie SameSite 属性的有效选项列表。2019 年底,该公司开始向其浏览器推出这些更改,以强制开发者采用新规范。有关此更改的更多详细信息,请参阅 https://www.chromium.org/updates/same-site 和 https://blog.chromium.org/2019/10/developers-get-ready-for-new.html。
1.8.5 (2019-01-03)
警告
修复了文档字符串中的一个最后一个无效的转义序列。
1.8.4 (2018-11-11)
错误修复
Response.content_type 现在在 Python 2 中接受 unicode 字符串并将其编码为 latin-1。请参阅 https://github.com/Pylons/webob/pull/389 和 https://github.com/Pylons/webob/issues/388
现在接受头类支持一个 .copy() 函数,可以用来创建副本。这允许 create_accept_header 和其他类似函数接受现有的接受头。请参阅 https://github.com/Pylons/webob/pull/386 和 https://github.com/Pylons/webob/issues/385
警告
新接受处理代码引入的一些反斜杠在将源编译为 pyc 文件时导致 DeprecationWarnings,所有反斜杠都已按照适当的方式重新约束,用户应不再看到关于无效转义序列的 DeprecationWarnings。请参阅 https://github.com/Pylons/webob/issues/384
1.8.3 (2018-10-14)
错误修复
acceptparse.AcceptValidHeader、acceptparse.AcceptInvalidHeader 和 acceptparse.AcceptNoHeader 现在在调用 .acceptable_offers() 时将始终忽略不匹配所需媒体类型语法的报价。先前版本在 AcceptValidHeader 中对无效报价引发 ValueError,并在其他情况下将其作为可接受的返回。请参阅 https://github.com/Pylons/webob/pull/372
功能
添加了 Request.remote_host,公开 REMOTE_HOST 环境变量。
将 acceptparse.Accept.parse_offer 添加到明确说明哪些报价与 acceptparse.AcceptValidHeader.acceptable_offers、acceptparse.AcceptMissingHeader.acceptable_offers 和 acceptparse.AcceptInvalidHeader.acceptable_offers 兼容。此 API 还使用小写类型/子类型和参数名称对报价进行标准化。请参阅 https://github.com/Pylons/webob/pull/376 和 https://github.com/Pylons/webob/pull/379
1.8.2 (2018-06-05)
错误修复
现在可以将 SameSite 作为 str 或 bytes 传递给 Response.set_cookie 和 cookies.make_cookie。这是一个疏忽,因为所有其他参数在序列化之前都会被正确地强制转换。请参阅 https://github.com/Pylons/webob/issues/361 和 https://github.com/Pylons/webob/pull/362
1.8.1 (2018-04-10)
错误修复
WebOb 1.8.0 中废弃的 acceptparse.MIMEAccept 引入了一个导致其在无效接受头中引发错误的向后不兼容更改。现在已撤销此行为,并对 MIMEAccept 进行了一些其他修复,使其更像旧版本。请参阅 https://github.com/Pylons/webob/pull/356
1.8.0 (2018-04-04)
功能
request.POST 现在支持任何具有适当 Content-Type 的请求。允许任何 HTTP 方法访问表单编码内容,包括 DELETE、PUT 等。请参阅 https://github.com/Pylons/webob/pull/352
兼容性
WebOb 已不再官方支持 Python 3.3,该版本已于 2017-09-29 到期。
向后不兼容性
WebOb 的接受处理方式已经发生了许多变化,不仅针对接受头本身,还包括 Accept-Charset、Accept-Encoding 和 Accept-Language。这是一个由 Whiteroses(《https://github.com/whiteroses》)完成的 Google Summer of Code 项目。感谢 Google 运行 GSoC、Python 软件基金会组织和 Ira 完成这项工作。请参阅《https://github.com/Pylons/webob/pull/338》和《https://github.com/Pylons/webob/pull/335》。文档可在《https://docs.pylonsproject.org/projects/webob/en/master/api/webob.html》找到
当调用一个用 @wsgify 装饰的函数时,现在将使用传递给 @wsgify 的默认参数来调用请求,而不是作为 start_response
def hello(req, name): return "Hello, %s!" % name app = wsgify(hello, args=("Fred",)) req = Request.blank('/') resp = req.get_response(app) # => "Hello, Fred" resp2 = app(req) # => "Hello, Fred"
之前,当使用 resp2 行时可能会因为 TypeError 而失败。这次更改后,无法通过不提供任何参数的方式来覆盖默认参数。请参阅 https://github.com/Pylons/webob/pull/203
当在 Response 对象上设置 app_iter 时,content_md5 头不再被清除。这种行为很奇怪,并阻止了设置 content_md5 然后返回用于分块内容编码的迭代器。请参阅 https://github.com/Pylons/webob/issues/86
实验性功能
这些功能是实验性的,未来可能会有所改变。
现在在 webob.cookies.make_cookie 和 webob.cookies.CookieProfile 中,cookie API 现在可以设置 cookie 的 SameSite 属性。请参阅 https://github.com/Pylons/webob/pull/255
错误修复
异常现在使用 string.Template.safe_substitute 而不是 string.Template.substitute。后者会在缺少映射时引发错误,而前者将简单地不替换缺失的变量。这在 WSGI 环境不包含用于正文模板的必要键时更安全。请参阅 https://github.com/Pylons/webob/issues/345。
Request.host_url, Request.host_port, Request.domain 正确解析由浏览器提供的 IPv6 Host 头。请参阅 https://github.com/Pylons/webob/pull/332
Request.authorization 对于不寻常或格式错误的头值会引发 ValueError。请参阅 https://github.com/Pylons/webob/issues/231
允许在调用 request.decode 时使用替代编码对表单数据中的无名称字段进行正确转码。请参阅 https://github.com/Pylons/webob/pull/309
Response.__init__ 在没有正文的情况下会丢弃 app_iter,这会在 app_iter 是与 Web 应用程序生命周期相关联的对象并且必须被正确关闭时引发问题。app_iter 是 Response 的更高级 API,因此即使它包含正文并且违反了 HTTP RFC,我们也应该允许用户通过返回正文来“自我伤害”。请参阅 https://github.com/Pylons/webob/issues/305
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
webob-1.8.8.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2abc1555e118fc251e705fc6dc66c7f5353bb9fbfab6d20e22f1c02b4b71bcee |
|
MD5 | 2372b45cf0e0a3970daaa901fc9d0f64 |
|
BLAKE2b-256 | a27aac5b1ab5636cc3bfc9bab1ed54ff4e8fdeb6367edd911f7337be2248b8ab |
WebOb-1.8.8-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b60ba63f05c0cf61e086a10c3781a41fcfe30027753a8ae6d819c77592ce83ea |
|
MD5 | 4c0b6ef764dd301d3a87a1894626773a |
|
BLAKE2b-256 | c3c2fbc206db211c11ac85f2b440670ff6f43d44d7601f61b95628f56d271c21 |