与 RFC2518 的总体变更
本章列出了本文档与 [RFC2518] 之间的主要变更, 首要的便是可能导致实施发生变化的变更.
服务器将通过在 DAV 响应标头中返回合规类3 来宣城对本规范中所有变更的支持
(请参阅第 10.1 节和第 18.3 节).
F.1. 客户端与服务器实现的变更
F.1.1. 集合和命名空间操作
PROPFIND方法中
allprop(第 9.1 节) 的语义已被放宽, 现在服务器的返回结果至少包括本规范中定义的活属性, 但不一定包含其他活属性. 因此,allprop现在更像 "返回请求allprop时应该返回的所有属性", 这组属性可能包含自定义属性与其他规范中定义的属性(这些规范有此要求). 与此相关的是, 现在可以使用include语法扩展allprop请求, 以包含特定名称的属性, 从而避免由于allprop语义变化而导致的额外请求.服务器现在可以拒绝 带有
Depth: Infinity的PROPFIND 请求. 使用此选项的客户端需要改为执行一系列Depth:1的请求.Multi-Status响应体现在可以在新的location元素中传输 HTTP 的Location响应标头的值. 客户端可以利用这一点来避免在处理带有 3xx 状态的response元素时需要进行额外的请求 (见第 14.24 节).COPY 的定义已被放宽, 现在不再要求服务器先删除目标资源(这在[RFC3253]中是已知的不兼容性). 见第 9.8 节).
F.1.2. 标头和封装
除完整的URI外,
Destination和If请求标头现在允许使用绝对路径 (见第 8.3 节). 这对于通过反向代理操作的客户端可能很有用, 这些代理会重写Host请求标头, 但不会重写 WebDAV 特有的标头.本规范采用了 [RFC3253] 中定义的错误扩展和 "前置条件/后置条件"术语(见第 16 节). 与此相关的是, 在多状态响应正文中添加了
errorXML元素(见第 14.5 节,但注意其格式不同于 [RFC3253] 中推荐的格式).发送与接收方现在必须支持 XML 消息这种中的 UTF-16 字符编码 (见第 19 节).
F.1.3. 锁定
[RFC2518] 的 "锁空资源"(LNRs)概念已被简化为 "空锁定资源" (见第 7.3 节). 客户端不能再依赖某些 LNRs 的功能, 即 "使用 LOCK 创建锁定集合, 或在未发出 PUT 或 MKCOL 请求时,资源会在 UNLOCK 后消失" 这一事实. 请注意,服务器仍然可以按照 [RFC2518] 实现 LNRs.
锁不再隐式刷新, 而是仅在明确请求时刷新 (见第 9.10.2 节).
明确规定在 LOCK 请求中提供的
DAV值必须像死属性一样由服务器永久保存 (见第 14.17 节). 还添加了DAV:lockroot元素(见第 14.12 节), 该元素允许客户端发现锁根目录.
F.2. 服务器实现的变更
F.2.1. 集合和命名空间操作
由于实现缺乏, COPY 和 MOVE 请求正文中的
propertybehavior已被删除. 取而代之的是明确了属性保留的要求 (见第 9.8 和 9.9 节).
F.2.2. 属性
增强对服务器存储的属性值, 特别是对语言信息 (
xml:lang), 空格和 XML命名空间信息的持久性 (见第 4.3 节).只有
rfc1123-date格式的值才是DAV:getlastmodified的合法值 (见第 15.7 节).
F.2.3. 标头和封装
F.2.4. 锁定
F.3. 其他变更
集合状态的定义已被修正, 不再根据 Reqeust-URI 变化 (见第 5.2 节).
由于缺乏实现实践, 已删除了在[RFC2518#6.4]中引入的 DAV:source属性.
现在 DAV标头, 除兼容性类标记外, 允许通过 URI 使用非 IETF 扩展. DAV标头现在也可以用于请求, 尽管本规范未定义 (此处定义的) 兼容性类的相关语义 (见第 10.1 节).
[RFC2518#9.2] 中的 Depth标头的定义要求: 在默认情况下, 请求标头将应用于范围内的每个资源.
根据实践经验, 现已将默认设置反转(见第 10.2 节).
由于缺乏实践, HTTP 状态码 102([RFC2518#10.1])和 Status-URI 响应标头([RFC2518#9.7]) 的定义已被删除.
Timeout 请求标头中使用的 TimeType 格式和 timeout XML元素曾经是可扩展的.
现在只允许使用此规范中定义的两种格式 (见第 10.7 节).