【问题标题】:Garbage bytes in http output?http输出中的垃圾字节?
【发布时间】:2011-05-03 04:13:30
【问题描述】:

当我使用 telnet 查看我的网页时,我会在输出中看到这些奇怪的数字/字母。这不会发生在浏览器中,它们绝对不在我的源代码中。我检查了其他网站,但他们没有。任何想法为什么?他们是垃圾吗?我怎样才能摆脱它们?

telnet www.mysite.com 80
GET / HTTP/1.1
主机 www.mysite.com

网页的某些部分还可以,但其他部分看起来像这样(我用粗体突出显示了它们):

51
<ul>
<li><a href="/path/to/file
1b
">Link name</a></li>
<li><a href="/path-to-another-file
2a

编辑:要求提供更多信息
Apache 2 和 CGI​​ (C)
动态生成

【问题讨论】:

  • 您的 Web 服务器上运行什么 HTTP 服务器软件?您的页面是静态生成的还是动态生成的?
  • 也许这个问题应该去ServerFault?

标签: html http browser telnet


【解决方案1】:

服务器使用"chunked" encoding,它允许Web服务器在请求动态生成的页面(例如CGI、PHP或ASP)后保持HTTP连接打开以供重用,而无需在服务器端缓冲整个页面在传输之前。它通过一次发送网页的小部分(“块”)来工作,每个部分都具有以字节为单位的指定长度(您在整个页面中看到的十六进制数字)。这允许客户端知道服务器何时完成发送数据。

根据 RFC 2616(HTTP 规范),所有 HTTP/1.1 客户端都是 required to be able to decode chunked encoding。这意味着,如果您不想接收分块响应,则需要使用 HTTP/1.0 的版本标识符(该规范的旧版本)请求页面:

telnet www.mysite.com 80
GET / HTTP/1.0
Host: www.mysite.com 

服务器将在完成响应后关闭连接,而不是使用分块编码并保持连接打开。

【讨论】:

    【解决方案2】:

    这是HTTP Chunked transfer encoding,如果您不想得到它,请改为执行 HTTP 1.0 请求。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2014-12-18
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 2015-04-29
      • 2016-01-11
      • 2023-03-20
      • 2018-09-12
      相关资源
      最近更新 更多