2 回答
TA贡献1829条经验 获得超9个赞
本站的回复是错误的。它声称使用 gzip 编码,但实际上并没有压缩内容。响应看起来像这样:
HTTP/1.1 200 OK
...
Content-Encoding: gzip
...
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-kr
8000
<html>
<head>
...
“8000”来自分块传输编码,但“...”是未分块响应正文的开头。显然,即使声称是这样,它也没有被压缩。
看起来浏览器只是通过忽略错误的编码规范来绕过这个损坏的站点。浏览器实际上可以解决许多损坏的问题,这些问题并没有真正增加供应商解决这些问题的动力:(但你可以看到这curl将失败:
$ curl -v --compressed http://romboutskorea.co.kr/main/index.php?
...
< HTTP/1.1 200 OK
< ...
< Content-Encoding: gzip
< ...
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=euc-kr
<
* Error while processing content unencoding: invalid code lengths set
* Failed writing data
* Curl_http_done: called premature == 1
* Closing connection 0
curl: (23) Error while processing content unencoding: invalid code lengths set
Python 也是如此:
$ python3 -c 'import requests; requests.get("http://romboutskorea.co.kr/main/index.php?")'
...
requests.exceptions.ContentDecodingError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))
TA贡献1784条经验 获得超9个赞
我懂了
Content-Type: text/html; charset=euc-kr Content-Encoding: gzip
检查正文内容:就像这里一样,它可能是一个 HTTP 响应,其中正文首先用 gzip 压缩,然后用分块传输编码进行编码。
NewChunkedReader
将需要一个,如本例所示。
- 2 回答
- 0 关注
- 861 浏览
添加回答
举报