Perl LWP 尝试将 peer_http_version 设置为 HTTP/1.0

标签 perl http version lwp peer

尝试使用 perl LWP 连接到 Microsoft-HTTPAPI/2.0 服务器时出现 500 服务器错误。使用浏览器可以成功连接。我看到的唯一区别是浏览器问题 HTTP/1.0 协议(protocol)与 LWP HTTP/1.1。所以我尝试强制 LWP 使用旧协议(protocol)但没有成功。我找到了设置此协议(protocol)的示例,但使用 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");

最佳答案

这将使 LWP 指定 HTTP/1.0。

my $request = GET "http://google.com";
$request->protocol('HTTP/1.0');
my $response = $ua->request($request);

关于Perl LWP 尝试将 peer_http_version 设置为 HTTP/1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842906/

相关文章:

perl - 使用perl评估归档的解码文件

rest - HTTP 缓存的授权检查

php - 需要帮助使用 php 检测 iOS 版本以提供正确的图标

ubuntu - 如何在 Ubuntu 中将 mosquitto 更新到最新版本

r - 用于包安装的 false R 版本

regex - 匹配正则表达式并在单行代码中分配结果

windows - 如何在 Windows 上的 Perl 中安装 ExtUtils::PkgConfig?

html - 使用 Perl Mechanize Firefox 上传文件

http - 在 Dart 控制台应用程序中,是否有一个不需要 DOM 访问的 HTTP 请求库?

java - 如何修复使用RestTemplate访问微服务时出现org.springframework.web.client.HttpClientErrorException : 400 null,错误