在从HTTP服务器下载文件时,我希望能够获得某种类型的文件校验和(例如SHA-256哈希或其他任何东西),它可以作为HTTP响应头之一传输。
HTTP的etag
也有类似的功能,但仅用于使浏览器缓存失效。从我注意到的情况来看,每个站点都是以不同的方式计算它,而且它看起来不像我知道的任何哈希。
某些软件下载站提供各种文件校验和作为单独的文件进行下载(例如最新的Ubuntu 16.04 SHA1哈希:http://releases.ubuntu.com/16.04/SHA1SUMS)。将它们包含在HTTP响应头中并强制浏览器在下载结束时计算它们(而不强迫用户手动计算)是否更容易?
我想整个基于HTTP的互联网之所以能正常工作,是因为我们使用可靠的TCP协议,它确保接收到的字节与服务器发送的字节完全相同。但如果TCP如此“酷”,为什么我们要手动检查文件哈希值(参见上面的Ubuntu示例)?在文件下载过程中,很多事情都可能出错(例如客户端/服务器磁盘损坏、服务器端的文件修改等)。如果我没错的话,通过在下载开始时传递文件哈希值,所有问题都可以轻松解决。