介绍
-
adjust按照官网的script引用后出现报错 (
Failed to find a valid digest in the 'integrity' attribute for resource 'https://cdn.adjust.com/adjust-latest.min.js' with computed SHA-384 integrity 'WE6fJqvcE0mjcC/fPYooIQAOhsHpTDVYjC52i6Asn3LECEpjHyI5zUwD8/5esthg'. The resource has been blocked.
)
-
通过查询资料发现这个问题就是官网自己改了cdn资源内容,然后没有更新官网文档导致的。(官网文档所用的
integrity
是过期了的。) -
简单介绍一下
integrity
(以下内容为摘要了解内容,具体详情可去MDN官方查看)
1)子资源完整性(Subresource Integrity,SRI
)是允许浏览器检查其获得的资源(例如从 CDN 获得的)是否被篡改的一项安全特性。它通过验证获取文件的哈希值是否和你提供的哈希值一样来判断资源是否被篡改。
2)使用子资源完整性功能的方法是,在任何 <script> 或 <link> 元素的integrity
属性值中,指定你要告诉浏览器所获取的资源(或文件)的 base64 编码的加密哈希值。
3)integrity
值至少由一个字符串开始,每个字符串包括一个前缀,表示一个特定的哈希算法(目前允许的前缀是sha256
、sha384
和sha512
),后面是一个短横线(-),最后是实际的 base64 编码的哈希。使用 base64 编码
sha384
算法计算出摘要后的 integrity 值的示例:sha384-WE6fJqvcE0mjcC/fPYooIQAOhsHpTDVYjC52i6Asn3LECEpjHyI5zUwD8/5esthg
WE6fJqvcE0mjcC/fPYooIQAOhsHpTDVYjC52i6Asn3LECEpjHyI5zUwD8/5esthg
即“哈希”部分,sha384
前缀说明使用的是sha384
哈希方法。
4)在线生成 SRI 哈希的工具: SRI Hash Generator: https://www.srihash.org/
5)你可以使用以下的 <script> 元素告诉浏览器在执行https://cdn.adjust.com/adjust-latest.min.js
中的内容之前,必须先比较该文件的哈希值是否和预期的一致,并验证是否匹配。<script src="https://cdn.adjust.com/adjust-latest.min.js`" integrity="sha384-WE6fJqvcE0mjcC/fPYooIQAOhsHpTDVYjC52i6Asn3LECEpjHyI5zUwD8/5esthg" crossorigin="anonymous"> </script>
解决
- 在线生成 SRI 哈希的工具: SRI Hash Generator: https://www.srihash.org/
- 使用在线生成SRI哈希工具重新按照当前网址(
https://cdn.adjust.com/adjust-latest.min.js
)生成SRI 哈希
- 然后把
integrity
的内容复制到我们的脚本加载里面去,下图红框内.
- 最终控制台报错消失,adjust功能正常。