V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
Livid
V2EX  ›  HTTP

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

  •  2
     
  •   Livid · 2014-12-13 18:38:10 +08:00 · 4001 次点击
    这是一个创建于 3670 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在一些对文件完整性要求极高的场合,下载之后是一定需要验证文件的 MD5 或者 SHA1 的。如果能够直接在 Response Header 里就有的话,可以省一个 HTTP 请求。发布的时候也会简单一些。

    或者 RFC 里其实已经有类似的考虑了,只是我还不知道?
    16 条回复    2014-12-14 21:56:19 +08:00
    choury
        1
    choury  
       2014-12-13 18:40:31 +08:00 via Android   ❤️ 2
    既然有人可以改响应内容,为什么不能改Header
    Livid
        2
    Livid  
    MOD
    OP
       2014-12-13 18:42:36 +08:00
    果然是有的:

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

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

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

    输出结果需要经过 Base64 编码。
    Kai
        6
    Kai  
    MOD
       2014-12-13 19:05:42 +08:00
    1.1 规范里面的这个 Content-MD5 原来不是服务器自动生成的……
    Livid
        7
    Livid  
    MOD
    OP
       2014-12-13 19:08:41 +08:00 via iPhone
    @Kai 如果是通过 HTTP 协议提供配置文件下载,那这个头就太有必要了。你懂的。
    Kai
        8
    Kai  
    MOD
       2014-12-13 19:10:59 +08:00
    @Livid 嗯,可还是得自己加上。nginx 好像没有这个项
    est
        9
    est  
       2014-12-13 19:42:58 +08:00
    嗯。我正想说Content-MD5来着。
    xinglp
        10
    xinglp  
       2014-12-13 20:05:13 +08:00
    一般都是丢包,传输未完成就断开,数据包出错的情况还真是很少。ip包本身还有校验
    a2z
        11
    a2z  
       2014-12-13 20:56:42 +08:00
    @choury
    +1
    HMAC还差不多
    flynaj
        12
    flynaj  
       2014-12-13 22:38:49 +08:00
    文件完整性要求极高你还是签个名,现在稍微大点的公司,发布的文件都是带数据签名的.像QQ安装包签名.里面的文件再签名.验证也非常简单.
    pubby
        13
    pubby  
       2014-12-13 23:57:46 +08:00
    @xinglp 遇到过渣网卡/驱动导致数据不一致的情况
    LukeXuan
        14
    LukeXuan  
       2014-12-14 00:17:05 +08:00 via Android
    如果是大文件效率太低…
    infinte
        15
    infinte  
       2014-12-14 00:19:05 +08:00
    TCP 本身就有 CRC32 不用多此一举
    julyclyde
        16
    julyclyde  
       2014-12-14 21:56:19 +08:00
    Content-MD5没啥用
    在206相应的情况下,Content-MD5的值是针对整文件的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1792 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:24 · PVG 00:24 · LAX 08:24 · JFK 11:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.