【问题标题】:GitHub raw files - Etag algorithmGitHub 原始文件 - Etag 算法
【发布时间】:2012-06-09 20:59:53
【问题描述】:

有谁知道访问原始内容时的 GitHub ETag 是如何生成的?

据我所知,这不是 MD5、SHA1 或任何常见的 SHA 变体;

http 标头示例:

HTTP/1.1 200 OK
Server: nginx/1.0.13
Date: Tue, 05 Jun 2012 19:46:08 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Status: 200 OK
ETag: "aa1da178ae0a43e23ce49a6b8f474738"

ETag长度为32个字符,提示MD5,但这与下载文件的MD5校验和不匹配(使用curl下载)。

我知道 ETag 应该被视为不透明的标识符。不过,很好奇。

【问题讨论】:

  • 这个有点具体了吧?
  • @dystroy 啊哈;我无法通过 Google 或 github.com 找到任何信息。容我们说,这是在黑暗中的一枪。

标签: github checksum etag


【解决方案1】:

【讨论】:

  • 谢谢,但没有骰子。该模块通过连接来自 Nginx 请求的一些信息、文件大小(十六进制)和文件 mtime(十六进制)来生成 ETag。 C 格式字符串“%s_%X_%X”。顺便说一句,即使在该项目的 README 中指定了 Nginx 版本,也有一些问题。这就是 ETag 的样子: Etag: /redhat-release HTTP/1.1_newline_User-Agent_22_4FCFB809 这是 URI 路径 + 协议版本 + \n + 请求头的一部分 + hex 文件大小 + hex 文件 mtime.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 2015-01-01
相关资源
最近更新 更多