从LWP获取原始响应标头?

pla*_*ect 3 perl lwp http-headers

有没有办法从LWP的HTTP请求中获取原始的,未修改的响应头?这适用于需要识别可能格式错误的标头问题的诊断工具.

我发现最接近的是:

use LWP::UserAgent;
my $ua = new LWP::UserAgent;
my $response = $ua->get("http://somedomain.com");
print $response->headers()->as_string();
Run Code Online (Sandbox Code Playgroud)

但这实际上解析了标题,然后从解析的数据中重构了它们的规范化,清理后的版本.我真的需要完整的服务器返回形式的整个标题文本,因此任何格式错误或非标准的标题都将清晰可辨.

如果事实证明LWP无法做到这一点,是否有其他Perl模块可以做到这一点?

Sch*_*ern 6

Net :: HTTP以较少的处理提供较低级别的访问.由于它是IO :: Socket :: INET的子类,因此您可以在发出请求后直接从对象中读取.

use Net::HTTP;

# Make the request using Net::HTTP.
my $s = Net::HTTP->new(Host => "www.perl.com") || die $@;
$s->write_request(GET => "/", 'User-Agent' => "Mozilla/5.0");

# Read the raw headers.
my @headers;
while(my $line = <$s>) {
    # Headers are done on a blank line.
    last unless $line =~ /\S/;
    push @headers, $line;
}
print @headers;
Run Code Online (Sandbox Code Playgroud)