Repr-Digest

实验性: 这是 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

Repr-Digest 响应或请求头提供了目标资源的 摘要,该摘要是 选定表示 的摘要。它在例如 Content-EncodingContent-Range 下是不变的,而这些影响 Content-Digest。此外,内容协商 可能会导致具有不同表示摘要的不同选定表示。

头类型 表示头
禁止的头名称

语法

Repr-Digest 描述了 RFC8941 字典,其键是摘要算法的名称,其值是以字节为单位的摘要(或者对于传统摘要算法来说是整数摘要)。

注意: 与规范的早期草案相比,标准的 base64 编码摘要字节在 字典语法 中作为冒号(:,ASCII 0x3A)的一部分被包装。

指令

摘要算法

目前仅注册了两种摘要算法,它们不被认为是不安全的:sha-512sha-256

注册的不安全摘要算法是:md5sha(SHA-1)、unixsumunixcksumadler(ADLER32)和 crc32c

不鼓励使用被认为不安全的摘要算法,因为碰撞可以现实地被强制执行,从而使摘要的效用变弱。除非在使用传统系统(这不太可能,因为大多数系统会期望传统的 Digest 头,并且不理解此规范),否则请考虑不发出 Repr-Digest,而不是使用不安全的摘要算法发出 Repr-Digest

示例

HTTP 响应,其中 Repr-DigestContent-Digest 重合

HTTP 服务器可以发送与选定表示的字节等效的内容字节

http
...
Repr-Digest: sha-256=:AEGPTgUMw5e96wxZuDtpfm23RBU3nFwtgY5fw4NYORo=:
Content-Digest: sha-256=:AEGPTgUMw5e96wxZuDtpfm23RBU3nFwtgY5fw4NYORo=:
...
Content-Type: text/yaml
Content-Encoding: identity
Content-Length: 38054
Content-Range: 0-38053/38054
...

HTTP 响应,其中 Repr-DigestContent-Digest 不同

但是,静态文件服务器可以选择压缩 HTML 页面,导致不同的 Content-DigestRepr-Digest 头值

http
...
Repr-Digest: sha-256=:AEGPTgUMw5e96wxZuDtpfm23RBU3nFwtgY5fw4NYORo=:, sha-512=:U59TCCaZPA9Qio3CzHJVAgDnIAut53t5Sgkj2Gv4BvDd0b+OX9QpIdgWkzdXLmBsmvBrf3t5PBt+UrVK6k5dkw==:
Content-Digest: sha-256=:293wcr5IoFAsDCzdoDXR1Qppgf2yxOPO1bvQ3nZQtuI=:, unixsum=54809
...
Content-Type: text/html; charset=utf-8
Content-Encoding: br
...

...
http
...
Repr-Digest: sha-256=:AEGPTgUMw5e96wxZuDtpfm23RBU3nFwtgY5fw4NYORo=:, sha-512=:U59TCCaZPA9Qio3CzHJVAgDnIAut53t5Sgkj2Gv4BvDd0b+OX9QpIdgWkzdXLmBsmvBrf3t5PBt+UrVK6k5dkw==:
Content-Digest: sha-256=:rv9Jivc4TmcacLUshzN3OdX7Hz+ORnQRaiTaIKZQ0zk=:
...
Content-Type: text/html; charset=utf-8
Content-Encoding: deflate, deflate, deflate
...

...

成功使用 Want-Repr-DigestRepr-DigestContent-Digest 的 HTTP 请求-响应

http
PUT /api/transact HTTP/1.1
Want-Repr-Digest: sha-256=8
Content-Type: text/json
...
http
HTTP/1.1 201 Created
Repr-Digest: sha-256=:W8oN3H3CmE/CBpV6ZPNozV2AIDzzQpWL7CCOXyDyDzI=:
Content-Encoding: br
Content-Digest: sha-256=:2IBI7hQn83oTCgB3Z/6apOl91WGoctRfRj/F9gkvVo8=:
...

使用 Repr-Digest 的不成功的 HTTP 请求-响应

http
GET /api/last-transaction HTTP/1.1
Accept: text/json
Repr-Digest: sha-256=:2IBI7hQn83oTCgB3Z/6apOl91WGoctRfRj/F9gkvVo8=:
...
http
HTTP/1.1 406 Not Acceptable
Repr-Digest: sha-256=:W8oN3H3CmE/CBpV6ZPNozV2AIDzzQpWL7CCOXyDyDzI=:
...

规范

规范
未知规范

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅