如何为 Perl 的 HTTP::DAV 实现 https 支持

mir*_*977 2 perl https webdav

我正在尝试通过 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");
Run Code Online (Sandbox Code Playgroud)

我创建了一个本地 webdav 目录,可以通过http protocol.

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

Crypt::SSLeay的机制的文档提供给我们使用内部下面Synopsys的LWP::UserAgent模块,从而提供用于在我们网站资源访问https协议:

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";
Run Code Online (Sandbox Code Playgroud)

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

类似于以下内容:

use HTTP::DAV; 

$d = HTTP::DAV->new();

$url = "https://host.org:8080/dav/";

#...
Run Code Online (Sandbox Code Playgroud)

tob*_*ink 5

这是未经测试的,但从浏览文档来看,这应该有效:

$d->get_user_agent->ssl_opts( verify_hostname => 0 );
Run Code Online (Sandbox Code Playgroud)

HTTP::DAV的文档说:

获取用户代理

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

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

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