有没有一种方法可以在不下载整个文件的情况下确定托管在HTTP服务器上的文件的版本?

Is there a way to determine the version of a file hosted on an HTTP server without downloading the entire file?

本文关键字:文件 情况下 版本 服务器 HTTP 一种 方法 有没有 下载      更新时间:2023-10-16

问题说明:我正在设计一个文件下载管理器API在Windows (VS 2010)上的c++。为了避免不必要的下载,我需要添加一个功能,只有当服务器上有新版本可用时,组件才会下载文件。

是否有一种方法可以在不下载文件本身的情况下确定服务器上是否有新版本的文件?

编辑:我没有访问/控制在web服务器上托管web服务等。

提前感谢!

科幻小说

您可以:

  1. 向服务器发送HEAD请求并查看响应的Last-Modified和/或ETag标头。如果您是第一次下载文件,或者如果头值与您从以前的下载中保存的值不匹配,则向服务器发送GET命令下载最新的文件并保存新的头值,以便下次下载。

  2. 如果你之前已经下载过一次文件,你可以向服务器发送一个"有条件的"GET请求,而不需要先发送HEAD请求。要使请求"有条件",可以:

    。包含If-Modified-Since头,其中包含先前下载的Last-Modified头的值。

    b。

  3. 包含If-Match头,其中包含上次下载的ETag头的值。

在"条件"GET请求中,如果文件在服务器上没有被修改(文件的当前头值仍然与您请求的If-值匹配),服务器将发送一个304 Not Modified回复,而不发送任何文件数据。如果文件在服务器上被修改,或者如果服务器不支持"有条件的"GET请求,它将发送一个200 OK回复,而不是当前文件数据。

相关文章: