【问题标题】:How to implement https support for Perl's HTTP::DAV如何实现对 Perl 的 HTTP::DAV 的 https 支持
【发布时间】:2020-09-15 13:53:06
【问题描述】:

我正在尝试通过 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 模块以便通过 WebDav and https 协议访问 Web 资源?

类似于以下内容:

use HTTP::DAV; 

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

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

#...

【问题讨论】:

    标签: perl https webdav


    【解决方案1】:

    这是未经测试的,但从浏览文档来看,这应该可以工作:

    $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 选项的 ssl_opts 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 2015-10-07
      • 1970-01-01
      • 2015-11-03
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多