Perl 如何让WWW::Mechanize正确处理带有URI片段的302重定向?
我有一个网页重定向到另一个url的形式 我想知道是否还有for来代替?子类,所以您仍然可以使用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
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个重定向。我想我可能刚刚取消了片段部分,但基本上是相同的方法。你也会在一个回复处理程序中做同样的事情。