通过 WebDAV 公开时如何使文件只读
How to make file READ ONLY when exposed through WebDAV
我正在使用 jackrabbit WebDAV 的实现。有一个用户没有文件夹的写入权限。该用户能够在桌面应用程序中打开文件并能够进行编辑。当用户保存时,服务器拒绝更改,但客户端仍然有这些更改,但在重新安装后,这些更改将消失。所以,我正在寻找以下问题的答案:
- 有没有办法让 files/folders 在挂载时只读
WebDAV?
- WebDAV 规范是否允许这样做?如果是这样,如何做到这一点
(回复 format/values)关于 MAC 和 windows?
感谢您的帮助。
使用 jackrabbit 服务器,在 windows 本机 WebDAV 客户端上,我们可以使用 属性 name Z:Win32FileAttributes.
这是在 charles 中捕获的 PROPFIND 响应:
<D:response>
<D:href>http://10.40.61.110:8080/repository/default/content/test.txt</D:href>
<D:propstat>
<D:prop>
<Z:Win32FileAttributes xmlns:Z="urn:schemas-microsoft-com:">00000021</Z:Win32FileAttributes>
<D:creationdate>2015-07-30T05:38:24Z</D:creationdate>
<D:getetag>"11-1438238197046"</D:getetag>
<D:lockdiscovery />
<D:displayname>test.txt</D:displayname>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:getlastmodified>Thu, 30 Jul 2015 06:36:37 GMT</D:getlastmodified>
<D:iscollection>0</D:iscollection>
<D:getcontenttype>application/xml</D:getcontenttype>
<D:getcontentlength>11</D:getcontentlength>
<D:resourcetype />
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://10.40.61.110:8080/repository/default/content/Desert.jpg</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2015-07-30T09:49:31Z</D:creationdate>
<D:getetag>"329032-1438249785205"</D:getetag>
<D:getlastmodified>Thu, 30 Jul 2015 09:49:45 GMT</D:getlastmodified>
<D:iscollection>0</D:iscollection>
<Z:Win32LastModifiedTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:45 GMT</Z:Win32LastModifiedTime>
<Z:Win32LastAccessTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:32 GMT</Z:Win32LastAccessTime>
<D:getcontentlength>329032</D:getcontentlength>
<D:resourcetype />
<Z:Win32FileAttributes xmlns:Z="urn:schemas-microsoft-com:">00000020</Z:Win32FileAttributes>
<D:lockdiscovery />
<D:displayname>Desert.jpg</D:displayname>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:getcontenttype>image/jpeg</D:getcontenttype>
<Z:Win32CreationTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:32 GMT</Z:Win32CreationTime>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
值:Z:Win32FileAttributes 的 00000020 - 允许 read/write
值:Z:Win32FileAttributes 的 00000021 - 允许只读
是否也在为本机 MAC WebDAV 客户端寻找任何此类属性?
WebDAV 使用 RFC3744 进行访问控制。通常,当用户尝试不允许的操作时,实现 RFC3744 的 WebDAV 服务器将使用 403 Forbidden
http 状态代码进行响应。
然而,大多数 WebDAV 客户端忽略了这一点,并假装整个服务器是读写或只读的。某些客户端可能会发出专有的 webdav 属性来指示只读状态。 Windows/Office 例如有自己专门的 属性,但我不知道 ottomh 的名称或值。
我正在使用 jackrabbit WebDAV 的实现。有一个用户没有文件夹的写入权限。该用户能够在桌面应用程序中打开文件并能够进行编辑。当用户保存时,服务器拒绝更改,但客户端仍然有这些更改,但在重新安装后,这些更改将消失。所以,我正在寻找以下问题的答案:
- 有没有办法让 files/folders 在挂载时只读 WebDAV?
- WebDAV 规范是否允许这样做?如果是这样,如何做到这一点 (回复 format/values)关于 MAC 和 windows?
感谢您的帮助。
使用 jackrabbit 服务器,在 windows 本机 WebDAV 客户端上,我们可以使用 属性 name Z:Win32FileAttributes.
这是在 charles 中捕获的 PROPFIND 响应:
<D:response>
<D:href>http://10.40.61.110:8080/repository/default/content/test.txt</D:href>
<D:propstat>
<D:prop>
<Z:Win32FileAttributes xmlns:Z="urn:schemas-microsoft-com:">00000021</Z:Win32FileAttributes>
<D:creationdate>2015-07-30T05:38:24Z</D:creationdate>
<D:getetag>"11-1438238197046"</D:getetag>
<D:lockdiscovery />
<D:displayname>test.txt</D:displayname>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:getlastmodified>Thu, 30 Jul 2015 06:36:37 GMT</D:getlastmodified>
<D:iscollection>0</D:iscollection>
<D:getcontenttype>application/xml</D:getcontenttype>
<D:getcontentlength>11</D:getcontentlength>
<D:resourcetype />
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://10.40.61.110:8080/repository/default/content/Desert.jpg</D:href>
<D:propstat>
<D:prop>
<D:creationdate>2015-07-30T09:49:31Z</D:creationdate>
<D:getetag>"329032-1438249785205"</D:getetag>
<D:getlastmodified>Thu, 30 Jul 2015 09:49:45 GMT</D:getlastmodified>
<D:iscollection>0</D:iscollection>
<Z:Win32LastModifiedTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:45 GMT</Z:Win32LastModifiedTime>
<Z:Win32LastAccessTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:32 GMT</Z:Win32LastAccessTime>
<D:getcontentlength>329032</D:getcontentlength>
<D:resourcetype />
<Z:Win32FileAttributes xmlns:Z="urn:schemas-microsoft-com:">00000020</Z:Win32FileAttributes>
<D:lockdiscovery />
<D:displayname>Desert.jpg</D:displayname>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive />
</D:lockscope>
<D:locktype>
<D:write />
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:getcontenttype>image/jpeg</D:getcontenttype>
<Z:Win32CreationTime xmlns:Z="urn:schemas-microsoft-com:">Thu, 30 Jul 2015 09:49:32 GMT</Z:Win32CreationTime>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
值:Z:Win32FileAttributes 的 00000020 - 允许 read/write
值:Z:Win32FileAttributes 的 00000021 - 允许只读
是否也在为本机 MAC WebDAV 客户端寻找任何此类属性?
WebDAV 使用 RFC3744 进行访问控制。通常,当用户尝试不允许的操作时,实现 RFC3744 的 WebDAV 服务器将使用 403 Forbidden
http 状态代码进行响应。
然而,大多数 WebDAV 客户端忽略了这一点,并假装整个服务器是读写或只读的。某些客户端可能会发出专有的 webdav 属性来指示只读状态。 Windows/Office 例如有自己专门的 属性,但我不知道 ottomh 的名称或值。