首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自服务器和GET请求的不正确响应

来自服务器和GET请求的不正确响应
EN

Stack Overflow用户
提问于 2013-12-14 02:30:34
回答 1查看 91关注 0票数 0

当我在c++中发送"GET“请求时,如下所示:

代码语言:javascript
复制
GET / HTTP/1.1\r\nHost: site.com\r\n\r\n

我得到了正确的答案。但是,当我根据浏览器所做的事情配置请求时(我从数据包嗅探器捕获了报头),来自服务器的响应是200,OK,但是html主体是一个垃圾。此外,标题中显示的内容长度也证明了我没有得到正确的html响应。当添加"Accept-Encoding: gzip,deflate“时会出现问题。我发送的正是浏览器发送的内容。但我收到的响应与浏览器不同。你认为为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 02:39:49

如果您接受gzipped内容,服务器可能会发送gzipped内容。(事实上,一些错误的服务器发送压缩的内容,即使你没有说你接受它!)

请注意,在返回的头文件中,它将包含Content-Encoding: gzip,或者可能放气而不是gzip。这告诉你关于编码的事。如果它是压缩的,您需要使用像zlib这样的库来解压缩它。

在对HTTP1.1请求的答复中可以看到的另一件事是,连接完成后不一定会关闭,您可能会得到Transfer-Encoding: chunked,它将对主体进行不同的格式化。分块响应是一系列具有六进制长度的块,然后是内容,以一个空块结束。相反,非分块的响应是与Content-Length头一起发送的,它可以告诉您期望的金额。内容长度是它发送的数据的长度,如果数据被压缩,其长度将更小。

除非实现解压缩,否则不要发送Accept-Encoding。但是,分块的响应可能需要实现,因为它在HTTP1.1中很常见,如果只使用HTTP1.0,就不能使用重要的主机头。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20579049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档