我有一个HTTP响应请求太大,速度太慢(1.2 mb, 15秒,纯文本)。我想用gzip压缩,但服务器不是我的。然后我将数据用于图表
例如。我需要这个响应是compress:
https://rickandmortyapi.com/api/location/20
有可能吗?
我使用的代码效果很好:
$.post("http://serverNotMine", function() {}, "text")
.done(function(data) {
// my code for a chart.js
})
.fail(function() {
alert("Error");
});
我怎么知道服务器是否接受gzip?
Accept-Encoding
HTTP报头主要用于此目的,因此您可以指定目标编码,服务器将在选择列表中使用所需的编码进行响应。但是,服务器可以选择忽略此请求,除非明确禁止identity
,在这种情况下,服务器可以响应406错误。
然而,幸运的是,您正在尝试联系的服务器实际上支持gzip的Accept-Encoding
标头。
>>> import requests
>>> response = requests.get('https://rickandmortyapi.com/api/location/20',
headers={'Accept-Encoding': 'gzip'})
>>> response.headers['content-encoding']
'gzip'
只使用上面标头的HTTP客户端。但是,也有可能使用客户端已经使用的压缩算法的默认配置。