我已查看文档https://metacpan.org/pod/Furl 但是在使用Furl时我怎么能找到网站基础URI?
使用LWP很容易:
my $res = $ua->get($url);
my $base_uri = $res->base;
基函数尝试从此标题字段中获取值
my $base = (
$self->header('Content-Base'), # used to be HTTP/1.1
$self->header('Content-Location'), # HTTP/1.1
$self->header('Base'), # HTTP/1.0
)[0];
但我不能对Furl做同样的事。
答案 0 :(得分:3)
首先:你似乎想在$ base做一个匿名数组,因此,它应该是:
my $base = [
$res->header('header1'),
$res->header('header2'),
$res->header('header3')
];
因为你刚刚保存了第一个标题的代码(在你的情况下是Content-Base)并且对最后两个没有做任何处理,你可以使用 Data :: Dumper 来检查它。 也许这就是为什么它不起作用。
第二:但是,在阅读了Furl模块的代码后,我发现没有公开的方法来获取url的基础,所以除非你也在检查你自己的代码中<base>
html标签和你以前用过的uri请求你的回复(即使重定向后),你的代码可能会破坏一些旧的网站。 HTTP :: Response 执行此检查,这就是LWP使用的内容。
基础URI层次结构的引用:HTTP::Response - HTTP style response message