我有一个perl CGI应用程序,我想将用户请求标头转换为LWP :: UserAgent get请求。基本上,目标是复制传入的用户标题并使用它们发出单独的请求。在Vanilla Perl CGI中克隆请求头文件到LWP UserAgent
我试图自己创建标题,但是当我尝试显示CGI标题,然后显示我的克隆UserAgent标题时,它们不完全相同。这是我得到的:
my $cgi = new CGI; my %headers = map { $_ => $cgi->http($_) } $cgi->http; my $req_headers = HTTP::Headers->new(%headers); my $ua = LWP::UserAgent->new(default_headers => $req_headers); print Dumper $ua->default_headers;
基本上,%headers和$ ua-> default_headers是不一样的。 $ ua-> default_headers有一个代理,它将自己标识为perl脚本。我可以手动设置$ ua-> agent(“”),但还有其他缺陷,并且标头仍然不完全相同。
什么是做我想做的最好的方式?有一个更简单的解决方案...
我不明白你的问题。 HTTP标头对CGI脚本不可用。过滤后,HTTP标头被解析为环境变量并发送到CGI脚本。此外,CGI似乎没有一个记录的方法'http',第二行看起来像缺少一个'map'。 – 2010-06-19 07:57:35
也许我没有正确解答我的问题...... http://cpansearch.perl.org/src/LDS/CGI.pm-3.49/cgi_docs.html搜索“ - > http”。这给了我一个请求头的列表,不是吗?另见http://www.perlmonks.org/?node_id=838453 – Zach 2010-06-19 14:12:14
您是否看到Kinopiko在第2行中使用关键字“map”的评论? – mob 2010-06-19 16:14:20