【发布时间】:2012-10-02 07:33:48
【问题描述】:
尝试使用 perl LWP 连接到 Microsoft-HTTPAPI/2.0 服务器时出现 500 服务器错误。可以使用浏览器成功连接。我看到的唯一区别是浏览器问题 HTTP/1.0 协议与 LWP HTTP/1.1。所以我尝试强制 LWP 使用旧协议但没有成功。我找到了设置此协议的示例,但使用 Wireshark 进行的数据包检查仍显示 HTTP/1.1。我在这里错过了什么。使用 Active Perl v5.16.1。
#! C:\Perl64\bin\perl.exe
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common;
my $ua = new LWP::UserAgent(keep_alive=>1);
# trying to force HTTP/1.0
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, PeerHTTPVersion => "1.0");
my $response = $ua->request(GET "http://google.com");
【问题讨论】:
-
您使用什么浏览器发出 HTTP/1.0 请求?!
-
除非您手动更新了
network.http.version配置,否则 Firefox 不可能发送 HTTP/1.0 请求 - 我想不出有人这样做的任何理由。您如何检查这些 HTTP 请求? -
@friedo 来自 Wireshark
GET / HTTP/1.0 主机:www.google.com 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/ 15.0.1
-
这尤其没有意义。 HTTP 1.0 没有
Host标头。 -
没有意义。我的 network.http.version 是 1.1。
标签: perl http version lwp peer