是否存在支持客户端自主计算哈希验证文件版本的HTTP规范?
客户端避免重复下载的HTTP规范方案
1. 支持本地哈希校验的HTTP扩展
存在相关HTTP扩展规范支持你描述的场景:
- 客户端可自行计算本地文件的哈希值,通过
Want-Digest请求头指定哈希算法(如SHA-256),并将本地哈希放在If-None-Match头中发起请求。 - 服务器收到请求后,计算目标文件的对应哈希值进行对比:
- 若哈希一致,返回
304 Not Modified,客户端无需重复下载; - 若哈希不一致,返回
200 OK,同时在Digest响应头中携带服务器端的哈希值,客户端可选择下载新版本文件。
- 若哈希一致,返回
2. 与ETag机制的差异
- ETag要求客户端留存服务器返回的标识,而本地哈希校验无需依赖历史响应数据,客户端完全可以独立计算后发起校验。
- 注意:该功能需要服务器支持
Want-Digest和Digest头的处理,并非所有服务器默认启用。
3. 实际请求示例
客户端请求
GET /foo.tgz HTTP/1.1 Host: example.com Want-Digest: SHA-256 If-None-Match: SHA-256=asfdhasdfhzwsdf
服务器响应(哈希一致)
HTTP/1.1 304 Not Modified Digest: SHA-256=asfdhasdfhzwsdf
服务器响应(哈希不一致)
HTTP/1.1 200 OK Digest: SHA-256=abcdef1234567890 Content-Length: 12345
内容的提问来源于stack exchange,提问作者guettli
相关产品推荐
相关产品推荐

