问题陈述:我正在 Windows(VS 2010)上用 C++ 设计文件下载管理器 API。我需要添加一个功能,只有当服务器上有更新的版本时,组件才会下载文件,以避免不必要的下载。
有没有办法在不下载文件本身的情况下确定服务器上是否有更新版本的文件?
编辑:我无权访问/控制网络服务器以在服务器上托管网络服务等。
先感谢您!
-SF
您可以:
向服务器发送HEAD
请求并查看响应Last-Modified
和/或ETag
标头。如果您是第一次下载文件,或者标头值与您之前下载的保存的不匹配,则向服务器发送GET
命令以下载最新文件并保存新标头值) 下一次。
如果您之前已经下载过一次文件,您可以向服务器发送“条件”GET
请求,而无需先发送HEAD
请求。要使请求“有条件”,可以:
一种。包括一个If-Modified-Since
包含上一次下载的标头值的Last-Modified
标头。
湾。包括一个If-Match
包含上一次下载的标头值的ETag
标头。
在“条件”GET
请求中,如果文件没有在服务器上被修改(文件的当前标头值仍然与If-
您请求的值匹配),服务器将发送304 Not Modified
回复而不发送任何文件数据。如果服务器上的文件已被修改,或者如果服务器不支持“条件”GET
请求,它将200 OK
用当前文件数据发送回复。