我们正在使用木偶师,有时是剧作家来运行一些集成测试。我们模拟目标页面的一些脚本依赖项,这会导致子资源完整性散列不匹配。
在计算SHA-256完整性'47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='的资源'http://localhost:3000/static/third-party/adobe-target/at-js/2.4.0-cname/at.js'的'完整性'属性中找到有效摘要失败。资源已被阻塞。">
是否有一种方法可以通过标志或配置属性禁用完整性哈希检查?
No。我认为唯一的方法是从加载脚本的源代码中修复或删除integrity
属性。
查看chromium(或blink)源,除非integrity
属性为空,否则FetchManager::Loader
将实例化SRIVerifier
,其构造函数调用其OnStateChange
方法,其中对于basic
,cors
,default
(省略opaque
响应和错误)的响应类型,SubresourceIntegrity::CheckSubresourceIntegrity
被调用。除非integrity
属性解析失败,否则SubresourceIntegrity::CheckSubresourceIntegrityImpl
要么成功验证其中一个摘要,要么失败并显示给定的错误消息。在此路径上没有检查配置选项来覆盖失败的检查。
我确认你不能在Chrome中这样做。原因是它没有在运行时标志后面实现。像这样的标志在技术上是可以添加的,但可能不值得。
我相信你可以围绕这个工作,例如加载puppeteer与扩展,删除完整性属性,或从puppeteer内删除属性?