在 question 494120 中提出了类似的问题,但恕我直言,并没有真正回答...
我想使用 perl/WebDAV(从 Win32 主机)将文件上传到共享点。为此,我需要在服务器上使用 KERBEROS 进行身份验证。在谷歌上搜索了几个小时并尝试了不同的方法后,我无法打开连接。当前代码是这样的:
my $agent = HTTP::DAV::UserAgent->new(keep_alive=>1);
$agent->agent('Agent');
$agent->timeout(1000);
my $d = HTTP::DAV->new(-useragent => $agent);
$d->credentials( -user=>$user,-pass =>$pass, -url =>$url);
$d->open( -url=>$url ) or die("Couldn't open $url: " .$d->message . "\n");
在执行 $d->open(...) 时,我总是得到“无法打开 $url:未经授权。协商”。因此,显然基本身份验证不起作用。
谁能给我指明正确的道路,好吗?我不固定使用 WebDAV,任何其他机制也适合我。只是想让它工作...
编辑 1
当 LWP
与 Authen::NTLM
一起使用时(如 Madhur 所建议)也不起作用。它会在 IIS 和 Apache 上导致 500 内部服务器错误
。由于在两个不同的 Web 服务器(具有两个不同的 NTLM 实现)上发生相同的错误,我猜 Authen::NTLM
模块中一定有问题。
Looking at the implementation Authen::NTLM
在我看来,代码有点像逆向工程,既不是基于规范实现的,也不是真正可配置的。为什么会出现这个问题 the specification未用于实现模块...
将 NTLM 与 Perl 一起使用是否是一种奇特的用例?
编辑2
根据 Madhur 的建议,我尝试使用 Curl 访问 Sharepoint。这行得通。但是通过嗅探 Curl 的 NTLM 消息和 Perl 发送的消息,我发现消息格式有些不同。
最佳答案
而不是使用 WebDAV。我建议您使用开箱即用的 Web 服务。
这概述了如何在 PERL 中使用 Sharepoint Web 服务:
http://www.squish.net/log/2008/10/11/perl-sharepoint/
http://shareperl.blogspot.com/
这是使用网络服务上传文件的 .NET 代码: http://www.oriolardevol.com/Article/Details/3
自从我使用 PERL 以来,将它转换为 PERL 代码留给你了 :)
关于perl - 使用 perl 和 webdav 访问共享点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4277340/