如何实现对Perl的HTTP::D AV的https支持



我正试图通过WebDav协议访问远程服务器,更具体地说,是Perl的HTTP::DAV模块。

根据其文档,与远程目录的耦合以以下方式进行:

use HTTP::DAV;

$d = HTTP::DAV->new();
$url = "http://host.org:8080/dav/";

$d->credentials(
-user  => "pcollins",
-pass  => "mypass", 
-url   => $url,
-realm => "DAV Realm"
);

$d->open( -url => $url )
or die("Couldn't open $url: " .$d->message . "n");

我创建了一个本地webdav目录,可以通过http protocol完美地访问它。

根据HTTP::DAV的文档,应该有和https支持使用Crypt::SSLeay模块。

Crypt::SSLeay的文档为我们提供了以下在LWP::UserAgent模块内部使用的概要,从而为我们提供通过https协议访问web资源:

use Net::SSL;
use LWP::UserAgent;

my $ua  = LWP::UserAgent->new(
ssl_opts => { verify_hostname => 0 },
);

my $response = $ua->get('https://www.example.com/');
print $response->content, "n";

我的问题是:如何组合HTTP::DAV and Crypt::SSLeay模块以便通过WebDav and https协议访问web资源?

类似以下内容:

use HTTP::DAV; 
$d = HTTP::DAV->new();
$url = "https://host.org:8080/dav/";
#...

这是未经测试的,但从浏览文档的角度来看,这应该是可行的:

$d->get_user_agent->ssl_opts( verify_hostname => 0 );

HTTP::DAV的文档显示:

get_user_agent

返回客户端的工作HTTP::DAV::UserAgent对象。

您可能希望与HTTP::DAV::UserAgent对象交互,以修改请求标头或提供高级身份验证过程。

HTTP::DAV::UserAgent没有文档记录,但其源代码显示它是LWP::UserAgent的子类。LWP::UserAgent的文档提到了为用户代理对象设置SSL选项的ssl_opts方法。

相关内容

  • 没有找到相关文章

最新更新