如果 HTTP 协议在设计的时候,就在 Response Header 中加入一个可选的 MD5 头呢?

2014-12-13 18:38:10 +08:00
 Livid
在一些对文件完整性要求极高的场合,下载之后是一定需要验证文件的 MD5 或者 SHA1 的。如果能够直接在 Response Header 里就有的话,可以省一个 HTTP 请求。发布的时候也会简单一些。

或者 RFC 里其实已经有类似的考虑了,只是我还不知道?
3979 次点击
所在节点    HTTP
16 条回复
choury
2014-12-13 18:40:31 +08:00
既然有人可以改响应内容,为什么不能改Header
Livid
2014-12-13 18:42:36 +08:00
果然是有的:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

RFC 2616 Section 14.15
Livid
2014-12-13 18:42:56 +08:00
看来还是应该通读一遍 RFC 2616
Livid
2014-12-13 18:45:16 +08:00
Livid
2014-12-13 18:51:04 +08:00
Apache 2 是有这个功能的:

http://httpd.apache.org/docs/current/mod/core.html#contentdigest

输出结果需要经过 Base64 编码。
Kai
2014-12-13 19:05:42 +08:00
1.1 规范里面的这个 Content-MD5 原来不是服务器自动生成的……
Livid
2014-12-13 19:08:41 +08:00
@Kai 如果是通过 HTTP 协议提供配置文件下载,那这个头就太有必要了。你懂的。
Kai
2014-12-13 19:10:59 +08:00
@Livid 嗯,可还是得自己加上。nginx 好像没有这个项
est
2014-12-13 19:42:58 +08:00
嗯。我正想说Content-MD5来着。
xinglp
2014-12-13 20:05:13 +08:00
一般都是丢包,传输未完成就断开,数据包出错的情况还真是很少。ip包本身还有校验
a2z
2014-12-13 20:56:42 +08:00
@choury
+1
HMAC还差不多
flynaj
2014-12-13 22:38:49 +08:00
文件完整性要求极高你还是签个名,现在稍微大点的公司,发布的文件都是带数据签名的.像QQ安装包签名.里面的文件再签名.验证也非常简单.
pubby
2014-12-13 23:57:46 +08:00
@xinglp 遇到过渣网卡/驱动导致数据不一致的情况
LukeXuan
2014-12-14 00:17:05 +08:00
如果是大文件效率太低…
infinte
2014-12-14 00:19:05 +08:00
TCP 本身就有 CRC32 不用多此一举
julyclyde
2014-12-14 21:56:19 +08:00
Content-MD5没啥用
在206相应的情况下,Content-MD5的值是针对整文件的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/153695

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX