【发布时间】:2015-10-20 21:46:55
【问题描述】:
我正在为 Flask 应用程序编写一个模糊器。我将示例请求存储为文本文件,例如 get.txt:
GET /docs/index.html HTTP/1.1
Host: www.w3.org
理想情况下,我会将其解析为 werkzeug.wrappers.Request 对象,类似于这样(伪代码):
from werkzeug.wrappers import Request
req = Request()
with open('get.txt') as f:
req.parse_raw(f.read())
但是,Werkzeug 中似乎没有进行原始 HTTP 解析。相反,Werkzeug 从BaseHTTPServer.BaseHTTPRequestHandler 获取一个WSGI 环境,这需要一个BaseHTTPServer.HTTPServer 实例来解析请求。对于这么简单的事情,这似乎有点过头了。
我也遇到了http-parser,它更接近我想要的,但它复制了 Werkzeug 的大多数数据结构,类型不兼容。我必须将数据从一个转换到另一个。
有没有更简单的方法可以在 Werkzeug 中从原始 HTTP 请求转到 WSGI 环境(或使用没有 HTTP 服务器的 BaseHTTPRequestHandler)?
【问题讨论】: