有没有一种方法可以在不下载整个文件的情况下确定托管在HTTP服务器上的文件的版本?
Is there a way to determine the version of a file hosted on an HTTP server without downloading the entire file?
问题说明:我正在设计一个文件下载管理器API在Windows (VS 2010)上的c++。为了避免不必要的下载,我需要添加一个功能,只有当服务器上有新版本可用时,组件才会下载文件。
是否有一种方法可以在不下载文件本身的情况下确定服务器上是否有新版本的文件?
编辑:我没有访问/控制在web服务器上托管web服务等。
提前感谢!
科幻小说
您可以:
-
向服务器发送
HEAD
请求并查看响应的Last-Modified
和/或ETag
标头。如果您是第一次下载文件,或者如果头值与您从以前的下载中保存的值不匹配,则向服务器发送GET
命令下载最新的文件并保存新的头值,以便下次下载。 -
如果你之前已经下载过一次文件,你可以向服务器发送一个"有条件的"
GET
请求,而不需要先发送HEAD
请求。要使请求"有条件",可以:。包含
If-Modified-Since
头,其中包含先前下载的Last-Modified
头的值。b。
包含
If-Match
头,其中包含上次下载的ETag
头的值。在"条件"GET
请求中,如果文件在服务器上没有被修改(文件的当前头值仍然与您请求的If-
值匹配),服务器将发送一个304 Not Modified
回复,而不发送任何文件数据。如果文件在服务器上被修改,或者如果服务器不支持"有条件的"GET
请求,它将发送一个200 OK
回复,而不是当前文件数据。
相关文章:
- 为什么在某些情况下不写入此文件?
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 是否可以在没有真实文件的情况下创建 ifstream
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- 如何在添加文件的情况下在VSCode中调试C++程序
- 每个文件(理想情况下是每个部分)的 clang 格式样式覆盖
- 如何在不重新创建现有文件的情况下写入.txt文件
- 如何在不知道大小的情况下读取文本文件并存储到数组中
- 如何使用Winforms C#或C++.Net在不更改文件中其他内容的情况下修改jpg文件中的Orientation e
- 如何在不循环的情况下使用getline读取文件
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 如何在不受其他文件影响的情况下"by itself" Visual Studio 项目中运行C++文件?
- 如何在不包含完整的文件系统头的情况下使用文件系统的类路径C++17?
- 如何在不设置 ulimit -n 的情况下解决套接字程序打开太多文件的错误
- Nlohmann 在不知道密钥的情况下解析 JSON 文件
- C++:如何在不将命令传递给 shell 的情况下执行文件?