我一直在编写一些Perl实用程序来与我公司的一些内部网站进行交互。前段时间我在访问某些页面时遇到了间歇性错误:“HTTP响应中的块大小错误”。我将此消息跟踪到模块Net::HTTP::Methods
。我花了一点时间试图诊断错误的最终起源,但没有成功。然后在某个地方我发现了一个建议,即将我的HTTP请求的协议设置为“HTTP / 1.0”可能会有所帮助,令我惊讶的是,确实如此。一旦我为所有导致我出现问题的页面请求执行了此操作,就会顺利进行。
最近,我一直在编写与本地Bugzilla服务器交互的代码。存在间歇性错误,其中HTTP响应在页面中间的某处被截断。起初我很困惑,但后来我想起了上面描述的问题并尝试将协议设置为HTTP / 1.0。再一次,它奏效了。我试过访问Bugzilla的“Enter CR”页面一百次。使用默认的HTTP / 1.1,我得到了六次响应的截断;使用HTTP / 1.0,零次。
有谁知道这里会发生什么?我从未在浏览器中看到页面截断,这表明问题出在LWP库中,但很难相信这样一个古老而广泛使用的库可能会有这样一个明显的错误。我使用最新的Perl模块运行Ubuntu,并且Bugzilla响应将服务器识别为Apache,如果这有帮助的话。
答案 0 :(得分:0)
从您的描述中看到发生的事情真的很难,但是
Transfer-Encoding: chunked
发送数据,因此这可以解释为什么它适用于HTTP / 1.0 perl -MLWP::UserAgent -e 'warn LWP::UserAgent->VERSION'
检查已安装的版本。当前版本是6.06。tcpdump -s0 -wfile ...
)对于查看服务器正在发送的数据也非常有用。