testing - 如何使用 testcafe 电子插件防止内容安全策略错误?
问题描述
尝试在 Testcafe 中运行我的电子应用程序时,我在控制台中遇到很多内容安全错误:
VM110 pagewrap.bundle.js:3 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'none'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-Z+HxFhVCHMznEI/lLsU2FT9krRiVCTm6bGApEd5HAtk=”)或随机数(“nonce-...”)。另请注意,'script-src' 未明确设置,因此 'default-src' 用作后备。
在 Linux 上使用不同的电子版本(4、6、7)进行了测试。(使用提供程序插件的 0.0.14 版本)我也尝试添加
<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline'; etc." />
只是为了测试,但它没有帮助
我什至不确定是否加载了正确的 mainWindowUrl,因为我只看到一个显示电子版本的黑色页面,而我的操作系统和 URLS 看起来像http://192.168.178.79:37961 ...
有没有办法调试 testcafe 的加载过程或任何提示如何防止这些错误?
解决方案
即使在 Electron 中运行测试时,TestCafe 也会模拟 Chrome 的内容安全策略。Chrome 和 Electron 策略之间的区别在于,Electron 将所有具有file:
来源的请求视为same-domain
当前页面也具有file:
来源。Chrome 的政策更加严格:每个不同的文件路径都被视为不同的来源。不幸的是,在内容安全策略中实施此类更改可能需要很多时间。您可以使用issue #4208来跟踪我们更新安全策略的进度。
推荐阅读
- kubernetes - 如何在 Kubernetes 中重用卷?
- c - 使用 realloc() 改变 malloc() 大小输出垃圾值(C语言)
- javascript - Keycloak javascript适配器调用受保护的rest api
- java - java.security.InvalidKeyException:从 .CRT 文件读取时密钥格式无效
- android - 取消来自应用程序的 Firebase 通知
- bitcoin - 比特币区块链上的“非标准”输出
- visual-studio - visual studio 2019 右键菜单太大
- flutter - 在 null 上调用了 getter 长度
- c++ - 构造函数如何在另一个类中工作
- django - 如何在django中获取模型的特定对象的所有继承对象