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

标签 perl https webdav

我正在尝试通过 WebDav 协议(protocol)访问远程服务器,更具体地说是 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 的文档,使用 Crypt::SSLeay 模块应该也有 https 支持。

Crypt::SSLeay 的文档为我们提供了在 LWP::UserAgent 模块内部使用的以下概要,从而为我们提供了通过 >https 协议(protocol):

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 和 Crypt::SSLeay 模块以便通过 WebDav 和 https 协议(protocol)访问 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

Returns the clients' working HTTP::DAV::UserAgent object.

You may want to interact with the HTTP::DAV::UserAgent object to modify request headers or provide advanced authentication procedures.

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

关于perl - 如何为 Perl 的 HTTP::DAV 实现 https 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63903416/

相关文章:

perl - 从 Perl 中的 2 个不同列表的哈希值获取差异值

perl - DBD::SQLite::st 执行失败:数据类型不匹配

perl - 如何在生产 Web 服务器上的 Apache/mod_perl 下测试 Web Perl 模块?

http - 如何在不同的方案 (http/https) 下访问 HTML5 session 存储

python - 有比这更好的简单 Python WebDAV 服务器代码片段吗?

arrays - 在 Perl 中动态创建数组

ruby-on-rails - 如何使用 nginx 配置 phusion passenger 以支持 rails 中的 ssl?

ios - 无法从 iOS 访问 https 网络服务

java - jackrabbit 使用 webdav 编辑存储库文件

android - 开发一个 Android Webdav 服务器