Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何让WWW::Mechanize正确处理带有URI片段的302重定向?_Perl_Redirect_Mechanize - Fatal编程技术网

Perl 如何让WWW::Mechanize正确处理带有URI片段的302重定向?

Perl 如何让WWW::Mechanize正确处理带有URI片段的302重定向?,perl,redirect,mechanize,Perl,Redirect,Mechanize,我有一个网页重定向到另一个url的形式 我想知道是否还有for来代替?子类,所以您仍然可以使用LWP::UserAgent的任何方法。因此,您可以使用simple\u request()方法,该方法不会自动处理重定向。它只是将响应作为对象返回给您。这意味着您可以使用is_redirect()和header()方法来获取重定向URI。这意味着您可以使用模块在#之后完成所有操作 唷 您的代码如下所示: my $response = $mech->simple_request( HTTP::Re

我有一个网页重定向到另一个url的形式

我想知道是否还有for来代替?

子类,所以您仍然可以使用
LWP::UserAgent
的任何方法。因此,您可以使用
simple\u request()
方法,该方法不会自动处理重定向。它只是将响应作为对象返回给您。这意味着您可以使用
is_redirect()
header()
方法来获取重定向URI。这意味着您可以使用模块在#之后完成所有操作

您的代码如下所示:

my $response = $mech->simple_request( HTTP::Request->new(GET => 'http://www.example.com/') );
if( $response->is_redirect ) {
  my $location = $response->header( "Location" );
  my $uri = new URI( $location );
  my $new_url = $uri->scheme . $uri->opaque;
# And here is where you do the load of the new URL.
}
可能需要做一些调整,可能是围绕
header()
行,但这将是一般的想法。

是的子类,因此答案是相同的

如果要自己处理重定向以重写URL,可能需要使用
response\u done
response\u redirect
处理程序。请参阅LWP::UserAgent文档的“处理程序”部分


至于“正确”,除了在14.6中提到的引用标题(这是唯一出现“片段”一词的地方)之外,没有说明客户应该如何处理片段。

到目前为止,您尝试了什么?显示问题的简短演示脚本在哪里?你看过文档了吗?我想你指的是302个重定向。我想我可能刚刚取消了片段部分,但基本上是相同的方法。你也会在一个回复处理程序中做同样的事情。