gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:37:33 25 4
gpt4 key购买 nike

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

有没有办法在不下载文件本身的情况下确定服务器上是否有更新版本的文件?

编辑:我无权访问/控制 Web 服务器以在服务器上托管 Web 服务等。

提前致谢!

-顺丰

最佳答案

您可以:

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

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

    一个。包含一个 If-Modified-Since header ,其中包含上次下载的 Last-Modified header 的值。

    包含一个 If-Match header ,其中包含来自上一次下载的 ETag header 的值。

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

关于c++ - 有没有一种方法可以在不下载整个文件的情况下确定托管在 HTTP 服务器上的文件的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16971921/

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