JPF*_*oia 7 python python-requests
我一直试图找到请求模块关于压缩的默认行为,但我找不到任何东西,所以我在这里问:
请求模块是否默认要求服务器进行压缩?我们必须在标题中指定它吗?
我在这里找到一个关于urllib的页面,据说标题必须要求压缩才能得到它:
http://www.diveintopython.net/http_web_services/gzip_compression.html
请求是否一样?
对于请求:具有正文的请求(例如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被接受的压缩类型.服务器将选择其中之一.