【问题标题】:Why does default Windows WebDAV Client ignore 403 Forbidden response?为什么默认的 Windows WebDAV 客户端会忽略 403 Forbidden 响应?
【发布时间】:2015-07-29 14:43:24
【问题描述】:

我正在为我的项目使用 sabre/dav 库,但在阻止默认 Windows WebDAV 客户端“删除”不应删除的文件时遇到了一些困难。 服务器部分的实现是好的,其他客户端(Finder,Cyber​​Duck)显然会抛出并确认禁止状态,这些客户端会中止删除过程,并向用户显示禁止错误。 Windows 客户端会返回相同的状态,但它似乎只是“删除”了在服务器端仍然可用的文件。通过刷新文件夹,这些文件再次可见。 Win客户端似乎只是忽略了被禁止的响应并虚拟删除了文件夹,使其不再可见。

更大的问题是,如果出于某种原因您决定删除一个文件夹,该文件夹下面有受保护和未受保护的文件/文件夹,它会删除所有未受保护的文件/文件夹,因为它无法确认第一个(或任何)禁止回复。其他 WebDAV 客户端检测到这一点并停止删除过程,因此指定的文件夹及其子文件夹/文件不会受到影响。

尝试删除文件夹或文件时的禁止响应示例:

HTTP/1.1 403 Forbidden
Server: nginx/1.8.0
Date: Wed, 29 Jul 2015 13:55:11 GMT
Content-Type: application/xml; charset=utf-8
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/5.4.41-1~dotdeb+7.1
X-Sabre-Version: 2.1.3
Vary: Accept-Encoding,User-Agent
Content-Length: 320

<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:sabredav-version>2.1.3</s:sabredav-version>
  <s:exception>Sabre\DAV\Exception\Forbidden</s:exception>
  <s:message>Permission denied to delete node</s:message>
</d:error>

在 Win8.1 x86 上测试默认 Win 客户端。

知道如何强制 Win WebDav 客户端检测 Forbidden 响应并终止删除过程吗?

谢谢。

【问题讨论】:

  • 可能会将一些 webdav 属性发送到 windows,表明该文件应被视为只读文件。虽然不能 100% 确定这些属性的外观。
  • 我已经尝试了 webdav 规范中的几种属性和方法,但没有一个成功。互联网上是否有某种文档(非常隐蔽)描述了 Windows webDAV 客户端在响应中需要具备的内容?

标签: windows webdav windows-explorer sabredav


【解决方案1】:

正如 Evert 所说,我认为您可以绕过属性问题:https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wdvme/f83d826b-7fad-4f80-838c-5c7cc98cb59f

这里有描述:How to make file READ ONLY when exposed through WebDAV

编辑:它的工作原理是您可以在文件上设置只读标志,但这不会阻止 Windows 资源管理器发送删除请求并忽略 403 状态代码。 Windows 资源管理器似乎只是一个糟糕的 webdav 客户端......

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2016-02-16
    • 2017-02-16
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多