【问题标题】:Why does leaflet.js 1.3.1 differ between unpkg.com and leafletjs.com?为什么leaflet.js 1.3.1 在unpkg.com 和leafletjs.com 之间有所不同?
【发布时间】:2018-07-27 16:38:56
【问题描述】:

我从leafletjs.com 下载了最新版本的leaflet (1.3.1),发现它与unpkg.com 不同:https://unpkg.com/leaflet@1.3.1/dist/leaflet.js

leaflet.js的第二行是:

unpkg.com:

* Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com

来自 Leafletjs.com 的压缩文件:

 * Leaflet 1.3.1+Detached: ba6f97fff8647e724e4dfe66d2ed7da11f908989.ba6f97f, a JS library for interactive maps. http://leafletjs.com

这是为什么呢?我修改了一个leafletjs.com 示例以使用我刚刚下载的传单的本地副本。由于链接完整性失败,它不起作用,所以我发现文件不同。它们不应该是相同的吗?

我克隆了 git 存储库并签出标签 v1.3.1。提交校验和与 zip 文件中出现的校验和相同:ba6f97fff8647e724e4dfe66d2ed7da11f908989

【问题讨论】:

    标签: leaflet


    【解决方案1】:

    这很奇怪,发布过程中可能存在一个错误,导致下载的 zip 文件包含的版本与 npm / unpkg 上发布的版本略有不同。

    是的,你是对的,这些文件应该是相同的。

    作为一种解决方法,您可以简单地在本地保存从 unpkg.com CDN 获得的版本。

    v1.3.1标签中的文件是正确的,你也可以使用。

    至于 SRI 检查,当您使用托管在您无法控制的其他地方(例如 CDN)的文件时,这很有趣。如果外部主机遭到入侵并且文件受到感染,SRI 检查将拒绝它们,从而确保访问者的安全。

    如果您使用本地托管的文件,即与您的 HTML 页面在同一台服务器上,SRI 就没那么有趣了:如果攻击者可以访问您的服务器并感染您的文件,他/她可以简单地感染您的 HTML 页面并修改任何 SRI 哈希,或者任何东西。

    至于为什么zip里面的文件没有通过SRI,却提到和tag release一样的commit hash,这只是构建文件时环境设置的问题。两个版本都是从同一个提交构建的。但是 zip 中的文件可能是在没有“发布”标志的情况下构建的,这使得它的介绍性打印略有不同(它提到了提交哈希而不只是标签名称),因此它的 SRI 哈希是不同的,即使代码内容是一样。

    【讨论】:

    • 报告为Leaflet issue #6062
    • 我将此标记为正确答案,因为我将错误报告输入到 github,这是我首先应该做的。
    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多