微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何为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模块内部使用的以下synopsys,从而为我们提供了基于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,但是its source code显示它是LWP :: UserAgent的子类。 LWP::UserAgent的文档中提到了ssl_opts方法,用于为用户代理对象设置SSL选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。