1

我有一个启用了 brotli 压缩的 Apache 服务器。当我从我的 cli 发送 curl 请求时,它工作正常。但是,当我从 python 发送请求时,它会返回没有 brotli 压缩的纯文本。这意味着它没有使用 brotli 压缩。

有效的卷曲命令:

curl  -H "Accept-Encoding: br"  http://testsite/index.html 

这是python代码:

headers = {
                ' Accept-Encoding': 'br',
            }
           response = requests.get('http://testsite/index.html', headers=headers)

如何从 python 发出请求,以便它向服务器发出请求以使用 brotli 压缩。

4

2 回答 2

1

您的示例未显示您如何阅读回复。但是您正在使用requests依赖urllib3,请求首先根据content-encoding标头解码响应内容。

您可以在urllib3 文档中查看该参数。

由于urllib3 支持 brotli 解码,因此您收到解码后的内容实际上是有意义的(考虑到安装了 brotli 模块)。

是您想要访问 brotli 编码内容的实际请求,如果是这样,您将必须检查请求文档以查看是否有访问原始未解码内容的方法。

于 2020-06-11T23:03:34.120 回答
1

这支持 brotli 请求https://github.com/encode/httpx

单元测试示例:

import brotli
import httpx

body = b"test 123"
compressed_body = brotli.compress(body)

headers = [(b"Content-Encoding", b"br")]
response = httpx.Response(200, headers=headers, content=compressed_body)
于 2019-09-20T10:35:45.127 回答