将 sabre/dav 服务器与 floccus 一起使用
Using sabre/dav server with floccus
[编辑 2]:长话短说 - floccus 无法使用摘要授权,这是我的 sabre/dav 服务器的设置方式。参见 this GitHub issue。
我已经按照 here 的说明在 Raspberry Pi 4 上设置了一个 sabre/dav 服务器。当我在浏览器中导航到我的服务器 URL 时,我进入了 saber 网络界面。我可以在这里上传文件,它们会出现在我的 public
文件夹中。
现在,我正在尝试设置 floccus 以将我的书签与服务器同步,但我碰壁了。我输入了我的服务器 URL 和凭据,就像我通过浏览器连接一样,我指定了书签文件应该存储的路径。我保存这些设置,然后单击 'Sync Now',但我最终遇到错误:E018: Couldn't authenticate with the server.
错误旁边有一个按钮可以下载调试日志,但它是一个空文件。
我已经尝试了多种设置路径的方法——一个文件位于我的 public
文件夹的根目录 (bookmarks.xbel
),一个文件位于更下方的目录 (bookmarks/bookmarks.xbel
),无论有没有首先创建的文件,所有这些都会导致相同的错误。
在此之前有没有人对此有任何好运,也许能够阐明我在这里做错了什么?
[编辑]:使用@Marcel Klehr 的回答,当我尝试同步时,我设法追踪到服务器发送的响应:
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>3.2.2</s:sabredav-version>
<s:exception>Sabre\DAV\Exception\NotAuthenticated</s:exception>
<s:message>No 'Authorization: Digest' header found. Either the client didn't send one, or the server is misconfigured</s:message>
</d:error>
这些是 headers:
看起来 floccus 使用的是 Basic Authorization 而不是 Digest。我可以在 this GitHub issue 中看到 floccus 不支持 Digest。我将尝试重新配置服务器以使用 Basic,看看是否可以解决问题。
[编辑 2]:切换到基本授权解决了这个问题。我已将@Marcel 的回答标记为已接受的答案,因为他们的指导帮助我找到了问题所在。
在我看来,您的实际问题不在于路径本身,而在于服务器(只需查看错误)。
您试过删除最右边的斜线吗?
换句话说,将http://my-public-ip/sabre/server.php/
替换为http://my-public-ip/sabre/server.php
。
您可以通过以下方式调试插件的网络请求:
火狐
- 前往
about:debugging
-> This firefox
- 单击絮凝物条目旁边的
inspect
按钮
- 转到检查器选项卡中的网络选项卡
- 通过单击您选择的帐户的
sync now
触发同步。
- 检查失败的网络请求
Chrome
- 转到
chrome://extensions
- 启用
Developer mode
- 单击“检查视图:”旁边的 floccus 条目中的
dist/html/background.html
按钮
- 转到检查器中的网络选项卡 window
- 点击您选择的帐户的
sync now
触发同步
- 检查失败的网络请求
[编辑 2]:长话短说 - floccus 无法使用摘要授权,这是我的 sabre/dav 服务器的设置方式。参见 this GitHub issue。
我已经按照 here 的说明在 Raspberry Pi 4 上设置了一个 sabre/dav 服务器。当我在浏览器中导航到我的服务器 URL 时,我进入了 saber 网络界面。我可以在这里上传文件,它们会出现在我的 public
文件夹中。
现在,我正在尝试设置 floccus 以将我的书签与服务器同步,但我碰壁了。我输入了我的服务器 URL 和凭据,就像我通过浏览器连接一样,我指定了书签文件应该存储的路径。我保存这些设置,然后单击 'Sync Now',但我最终遇到错误:E018: Couldn't authenticate with the server.
错误旁边有一个按钮可以下载调试日志,但它是一个空文件。
我已经尝试了多种设置路径的方法——一个文件位于我的 public
文件夹的根目录 (bookmarks.xbel
),一个文件位于更下方的目录 (bookmarks/bookmarks.xbel
),无论有没有首先创建的文件,所有这些都会导致相同的错误。
在此之前有没有人对此有任何好运,也许能够阐明我在这里做错了什么?
[编辑]:使用@Marcel Klehr 的回答,当我尝试同步时,我设法追踪到服务器发送的响应:
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>3.2.2</s:sabredav-version>
<s:exception>Sabre\DAV\Exception\NotAuthenticated</s:exception>
<s:message>No 'Authorization: Digest' header found. Either the client didn't send one, or the server is misconfigured</s:message>
</d:error>
这些是 headers:
看起来 floccus 使用的是 Basic Authorization 而不是 Digest。我可以在 this GitHub issue 中看到 floccus 不支持 Digest。我将尝试重新配置服务器以使用 Basic,看看是否可以解决问题。
[编辑 2]:切换到基本授权解决了这个问题。我已将@Marcel 的回答标记为已接受的答案,因为他们的指导帮助我找到了问题所在。
在我看来,您的实际问题不在于路径本身,而在于服务器(只需查看错误)。
您试过删除最右边的斜线吗?
换句话说,将http://my-public-ip/sabre/server.php/
替换为http://my-public-ip/sabre/server.php
。
您可以通过以下方式调试插件的网络请求:
火狐- 前往
about:debugging
->This firefox
- 单击絮凝物条目旁边的
inspect
按钮 - 转到检查器选项卡中的网络选项卡
- 通过单击您选择的帐户的
sync now
触发同步。 - 检查失败的网络请求
- 转到
chrome://extensions
- 启用
Developer mode
- 单击“检查视图:”旁边的 floccus 条目中的
dist/html/background.html
按钮 - 转到检查器中的网络选项卡 window
- 点击您选择的帐户的
sync now
触发同步 - 检查失败的网络请求