。但是,当我根据浏览器配置请求(我从数据包嗅探器捕获到头文件)时,来自服务器的响应是200 OK,但是html body是一块垃圾。此外,头文件中显示的content-Length证明我没有得到正确的html响应。 添加“Accept-Encoding:gzip,deflate”时会出现问题。我发送的是浏览器发送的内容。但是我收到了不同于浏览器的回应。 你为什么认为这会发生?响应不正确anfter当我发送带有“GET”在C++这样的请求,GET请求
0
A
回答
2
如果接受gzip内容,服务器可能会发送gzip内容。 (实际上,即使你不说你接受它,一些有问题的服务器也会发送gzip压缩的内容!)
请注意,在返回的头文件中,它将包含Content-Encoding: gzip
,或者可能是deflate而不是gzip。这告诉你有关编码。如果它被压缩,你需要使用类似zlib
的库来解压缩它。
您在HTTP 1.1请求的回复中可能会看到的另一件事是,连接在完成时不一定会关闭,并且您可能会得到Transfer-Encoding: chunked
,它将以不同方式格式化本体。分块响应是一系列具有十六进制长度的块,然后是内容,由一个空块结束。相反,非分块的响应与Content-Length
标题一起发送,这告诉你期望有多少。内容长度是它发送的数据的长度,如果数据被压缩,它将会更小。
除非您实施解压缩,否则不要发送Accept-Encoding
。分块响应是你可能必须实现的东西,因为它在http 1.1中很常见,如果你只是使用http 1.0,你将无法使用重要的主机头。
相关问题
- 1. 发送带有正文的GET请求
- 2. 当我vue.js发送POST请求时,它产生get请求
- 3. 正确的HTTP GET请求
- 4. axios.post正在发送GET请求
- 5. 角2 GET请求响应
- 6. C:发送HTTP GET请求在linux
- 7. 当jQuery.ajax发送GET时发送OPTIONS请求跨域的Ext.Ajax.request GET
- 8. Javascript发送GET请求
- 9. jQuery.post()发送GET请求?
- 10. 当用户发送GET请求到一个网站时,发现GET请求
- 11. 带请求参数的RestTemplate GET请求
- 12. 带请求标头的Powerbuilder GET请求
- 13. C#为什么HttpClient.PostAsJsonAsync发送GET请求?
- 14. C#clickatell发送短信HTTP GET请求
- 15. 如何发送带有body的GET请求到API Rest C#?
- 16. jQuery的GET请求正确Chrome和不响应FIREFOX
- 17. GET请求没有得到JSON响应
- 18. winHTTP GET请求C++
- 19. 在GET请求
- 20. 带参数的GET请求
- 21. 返回请求方法= GET但我发送请求= POST(ajax)
- 22. 发送GET请求,而不卷曲
- 23. $资源不发送GET请求
- 24. 发送GET请求到HTTP服务器;不关心响应
- 25. Elasticsearch GET请求与请求正文
- 26. 如何在查询中发送带有“/”的GET请求
- 27. 在Swift中发送带有参数(Parse Server API)的GET请求
- 28. NSURLConnection发送GET请求,而不是POST请求
- 29. 应用不能GET请求
- 30. API请求Coldfusion(GET请求)
服务器正在发回gzip内容。您需要将其解压缩以使其可读。 – AVP
感谢您的回答。但正如我所说,浏览器的响应头中的“Content-Length”字段与我的不同。例如,浏览器收到“Content-Length:17000”,但我收到“Content-Length:4000”。这怎么可能? – user2808671
使用Fiddler捕获并比较您发送的请求/响应和浏览器发送的内容。 –