gpt4 book ai didi

ithit-webdav-server - 如何强制读取操作始终请求整个文件

转载 作者:行者123 更新时间:2023-12-04 01:31:04 31 4
gpt4 key购买 nike

我目前正在升级我们以前的 webdav 实现以使用 IT-HIT。

在这个过程中,我注意到文件的读取操作可以请求整个文件或文件的一部分。我想知道是否有一种方法可以强制始终请求整个文件。我们的 webdav 处理小文件,没有太多需要。

我问是因为在我使用的文档中(Java 客户端版本 3.2.2420)我认为它只指定它用于写操作。

感谢您的帮助。

最佳答案

读取操作是一个 HTTP GET 请求,它可以包含一个 Range header 。 WebDAV 客户端以及任何其他客户端(如 Web 浏览器)可以利用 GET 请求来读取和下载文件内容。作为 GET 请求的一部分,他们可以附加 Range header ,指定他们想要获取文件内容的哪一部分。例如,当您暂停然后恢复下载或当下载中断然后恢复时,Range 请求可以由客户端指定:

GET https://webdavserv/file.ext 
Range: bytes=12345-45678

要测试服务器是否支持 Range header ,客户端应用程序可以发送 HEAD 请求。如果服务器响应包含 Accept-Ranges: bytes header ,则支持 Range header :

HEAD https://webdavserv/file.ext 
...
Accept-Ranges: bytes

因此解决方案是从 HEAD 响应中删除 Accept-Ranges header 。如果客户端能够正确处理 Accept-Ranges header 的缺失,它将始终请求整个文件。

如果您不能直接从代码中删除它,在许多情况下,您可以在发送响应之前从响应中删除或过滤 header 。具体的 header 删除代码取决于您的服务器(Java、ASP.NET、ASP.NET Core、OWIN 等)。例如,对于 ASP.NET,它将如下所示:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Accept-Ranges");
}

对于 Java,您需要创建一个过滤器:How do delete a HTTP response header?

关于ithit-webdav-server - 如何强制读取操作始终请求整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722094/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com