请求模块和压缩

JPF*_*oia 7 python python-requests

我一直试图找到请求模块关于压缩的默认行为,但我找不到任何东西,所以我在这里问:

请求模块是否默认要求服务器进行压缩?我们必须在标题中指定它吗?

我在这里找到一个关于urllib的页面,据说标题必须要求压缩才能得到它:

http://www.diveintopython.net/http_web_services/gzip_compression.html

请求是否一样?

Kro*_*tan 7

对于请求:具有正文的请求(例如POST)默认情况下不会压缩它们的主体,因为很少有服务器会支持它.

对于响应:默认情况下,它接受(通过请求标头)压缩和未压缩响应.这可以Accept-Encoding通过常规方式设置标题来覆盖.如果将"接受"设置为仅允许压缩,则服务器可能无法为您的请求提供服务(如果它不支持压缩).


小智 7

你可以自己测试一下.请尝试以下方法:

import requests
req = requests.get("http://google.com")
print(req.request.headers)
Run Code Online (Sandbox Code Playgroud)

这将打印发送到服务器的标头(默认标头,因为没有定义其他标头).在我的系统上,我得到:

{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.7.0 CPython/2.7.8 Linux/4.1.8-100.fc21.x86_64'}
Run Code Online (Sandbox Code Playgroud)

所以,gzip并且deflate被接受的压缩类型.服务器将选择其中之一.