如果我通过Cyberduck访问BigCommerce WebDAV,事情实际上可以工作。但是,我想以编程方式执行此操作。因此,我编写了以下代码:
const { createClient } = require("webdav");
async function run() {
const client = createClient(
"https://mystore.mybigcommerce.com/dav",
{
username: "myemail@email.com",
password: "mypassword"
}
);
const contents = await client.getDirectoryContents("/");
}
run();
这是我获取目录内容的代码。我从 https://github.com/perry-mitchell/webdav-client#usage 复制了它。我从BigCommerce网站复制了电子邮件和密码。
计算机在我运行脚本后返回(node:32672) UnhandledPromiseRejectionWarning: Error: Request failed with status code 401
。
如果我在 Web 浏览器中输入 URL 并输入正确的用户名和密码,它将返回以下内容:
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>SabreDAVExceptionNotImplemented</s:exception>
<s:message>
There was no plugin in the system that was willing to handle this GET method. Enable the Browser plugin to get a better result here.
</s:message>
</d:error>
希望你们能知道发生了什么,谢谢。
您需要一个支持 Digest Auth 的客户端,而不仅仅是 Basic。看起来有一些关于向您正在使用的 WebDAV 客户端添加摘要支持的对话。此 PR 可能是一个很好的起点:
https://github.com/perry-mitchell/webdav-client/pull/96