perl - 如何实现对 Perl 的 HTTP::DAV 的 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
协议访问网络资源:
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
模块以便通过协议访问 Web 资源WebDav and https
?
类似于以下内容:
use HTTP::DAV;
$d = HTTP::DAV->new();
$url = "https://host.org:8080/dav/";
#...
解决方案
这是未经测试的,但是从浏览文档来看,这应该可以工作:
$d->get_user_agent->ssl_opts( verify_hostname => 0 );
HTTP::DAV的文档说:
获取用户代理
返回客户端的工作 HTTP::DAV::UserAgent 对象。
您可能希望与 HTTP::DAV::UserAgent 对象交互以修改请求标头或提供高级身份验证过程。
HTTP::DAV::UserAgent 没有文档记录,但其源代码显示它是 LWP::UserAgent 的子类。LWP::UserAgent的文档提到了ssl_opts
为用户代理对象设置 SSL 选项的方法。
推荐阅读
- html - 使用列数显示元素列表时出现问题
- firefox - 旧版插件使用
- html - @keyframes 不适用于 %
- matlab - 控制 scatterhist 条颜色
- scala - 如何将一个小的字符串列表写入 HDFS 上的文件?
- parse-server - 如何将多个 Parse 服务器连接到同一个 mongodb?
- ansible - 从 ansible uri json 请求中获取值
- printing - 在 Xamarin UWP 中打印具有多个页面的 WebView
- protractor - 如何排除量角器中另一个 ElementArrayFinder 中存在的 ElementArrayFinder 项目?
- c# - 从 ssis 部署到 Sql 服务器时,C# 脚本无法在我的作业中执行