代码之家  ›  专栏  ›  技术社区  ›  Bob77

集合上的getcontentlength属性是否有定义的含义?

  •  0
  • Bob77  · 技术社区  · 9 年前

    以下响应片段是PROPFIND回复的一部分:

    <D:response>
    <D:href>https://dav.mystery-meat.com/top</D:href>
    <D:propstat>
    <D:prop>
    <D:creationdate ns0:dt="dateTime.tz">1970-01-01T00:00:00Z</D:creationdate>
    <D:getcontentlanguage>en</D:getcontentlanguage>
    <D:getcontentlength>16384</D:getcontentlength>
    <D:getcontenttype>httpd/unix-directory</D:getcontenttype>
    <D:getlastmodified ns0:dt="dateTime.rfc1123">Thu, 01 Jan 1970 00:00:00 GMT</D:getlastmodified>
    <D:resourcetype><D:collection/></D:resourcetype>
    </D:prop>
    <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
    </D:response>
    

    这个 getcontentlength value不是此目录中项目的总字节数。WebDAV中的这个值是否有任何预定义的含义,或者它是否只是由恰好报告值的每个服务器定义的实现者?

    一、 这真的有用吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Community Dai    3 年前

    阅读 the RFC ,通常它有一个完美的定义:

    目的:包含GET返回的Content-Length标头,不包含accept标头。

    如果这不清楚,它基本上说,如果你执行 GET 对同一资源的请求 Accept-* 头,响应将报告 Content-Length 这就是这个值。

    因此,如果您有符合标准的WebDAV实现,您应该能够通过执行 获取 对集合的请求。您可能会得到一些自动生成的HTML响应。

    如果对此的响应 获取 请求的大小(以字节为单位)与通过 {DAV:}getcontentlength ,它应该被认为是一个bug。

    我认为在你的特殊情况下,这可能是一个bug。事实上,报告的集合大小正好是2的幂,这让我相信这个特定的服务器会返回 stat() 对于该目录,这只是目录列表在文件系统上占用的空间(与使用 ls ).

    如果我的直觉是正确的,那么服务器基本上有坏的行为。