gpt4 book ai didi

perl - 在 WWW::Mechanize 中直接使用 `get` 访问 URL 时如何保持身份验证?

转载 作者:行者123 更新时间:2023-12-04 16:19:40 24 4
gpt4 key购买 nike

我是新来的 WWW::Mechanize但我知道如何登录以及如何使用 follow_link在我登录时访问其他页面的方法。但是当我想直接访问不在页面上的链接时,我失去了我的身份验证。

问题的快速示例:

my $LoginURL = "http://www.website.com/user/login.jsp?";
my $DirectURL= "/Somefile?param1&param2";
$mech = WWW::Mechanize->new();
$mech->get($LoginURL);
$mech->submit_form( ... ); # fields and stuff, works fine.
$mech->get($DirectURL); # This part fails and I'm using the direct URL.

我了解如何登录,我可以使用 follow_link 导航。方法,但是当我想使用 get 访问不在页面上的 URL 时方法我只是失去了我的身份验证。

当我想访问不在当前页面上的直接 URL 时,我需要做什么才能保持身份验证?

最佳答案

由于 HTTP 是一种无状态协议(protocol),因此每个请求都独立于前一个请求。在 HTTP 1.1 之前的版本中,HTTP 事务的默认行为是客户端联系服务器、发送请求并接收响应,然后客户端和服务器都断开 TCP 连接。如果客户端需要服务器上的另一个资源,它必须重新建立另一个 TCP 连接,请求资源,然后断开连接。如果您已成功通过身份验证,则目标网站可能会在您尝试访问下一页时“忘记”这一点。尝试查看 HTTP“连接” header 中包含哪个值。它应该是“keep-alive”而不是“TE,close”。如果这是问题,请尝试修改“连接” header 。你可以尝试这样的事情:

  $mech->add_header(
"Connection" => "keep-alive",
"Keep-Alive" => "115");

希望能帮助到你。

关于perl - 在 WWW::Mechanize 中直接使用 `get` 访问 URL 时如何保持身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com