【问题标题】:CDN integrity atribute sometimes fails in FirefoxCDN 完整性属性有时在 Firefox 中失败
【发布时间】:2017-01-17 13:01:46
【问题描述】:

我在我的 web 应用程序中使用了一些用于 javascript 和 CSS 的 CDN 链接,例如:

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"
        integrity="sha384-I6F5OKECLVtK/BL+8iSLDEHowSAfUo76ZL9+kGAgTRdiByINKJaqTPH/QVNS1VDb"
        crossorigin="anonymous"></script>

通常一切正常,但有时我会在 Firebug 控制台中收到此消息:

完整性属性中没有一个“sha256”哈希与子资源的内容匹配。

如果发生这种情况,我的 javascript 将无法加载并且我的应用程序已损坏。一个简单的刷新将解决这个问题。我不想摆脱 CDN 链接并自己托管文件,而是想解决这个问题。这是个常见的问题吗?

【问题讨论】:

  • 你为什么不简单地使用:&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"&lt;/script&gt;
  • 因为完整性属性允许浏览器检查加载的文件是否未被篡改。见stackoverflow.com/questions/32039568/…
  • &lt;script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"&gt;&lt;/script&gt;
  • 谢谢,但可惜:“完整性属性中包含的哈希无法解码。”
  • jquery 网站给了我这个: 似乎工作。也许这是一个云耀斑的事情。我将尝试使用 SHA256 编码替换所有 CDN 其他主机

标签: javascript jquery css cdn integrity


【解决方案1】:

对此的一种可能解释是您的系统时间是否足够。我在 VirtualBox 实例中运行 Debian。我让主机休眠了几次,没有再次接触虚拟机。那时我注意到某些网页在虚拟机中的 Firefox 中没有正确加载。一到这里,我就想到检查系统时间。果然开了将近2个小时。 ntp 没有安装,所以我安装了那个包:sudo aptitude install ntp。我验证了日期/时间是用date 更新的,然后再次测试了Firefox。有问题的网页(包括这个)可以正常工作。

【讨论】:

    【解决方案2】:

    确保您的网络连接正常,或者您的浏览器是否设置为使用网络代理,它也可以正常工作。

    当我在浏览器上本地加载 html(例如,文件 -> 打开文件)时看到此消息,由于当时我没有网络代理(通过 ssh 隧道)工作,完整性检查将失败。一旦我解决了我的网络连接问题,页面就会加载并且这些消息会消失(当然,假设完整性属性值是正确的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多