启用AdBlock时,我收到以下错误:
-
添加此:
Uncaught Error: Must pass a string which will eval to a globally accessible object where callbacks will be stored
-
MathJax:
Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' * 'unsafe-inline'".
禁用广告拦截后,一切正常。
这个问题出现在几周前。
即使启用了AdBlock,在使用MathJax的网站上一切正常:https://www.mathjax.org 和 https://math.stackexchange.com/
可能有些事情发生了变化,我需要正确更改代码。如何?
提前谢谢。
这两个错误都涉及相同的内容安全策略 (CSP( 问题,即不允许不安全的eval()
调用。广告拦截器,如AdBlock和Adblock Plus,最近开始使用CSP来处理传统技术不足的情况(请参阅Adblock Plus过滤器选项(。
我只能在 emathhelp.net 上重现它。在那里,我能够找到对此负责的过滤器||emathhelp.net^$csp=script-src 'self' * 'unsafe-inline'
,该过滤器已于 5 月 15 日添加到 EasyList 广告阻止列表中。在Adblock Plus中,您可以按照以下步骤找到此类过滤器:
- 右键单击页面上的任意位置
- 在上下文菜单中选择"检查">
- 切换到打开的窗口中的"广告拦截加"选项卡
- 重新加载页面以填充选项卡中的列表
- 查找类型为"CSP"的请求旁边的筛选器
您可以访问 EasyList(GitHub、论坛、网站(了解他们添加特定过滤器的原因。他们还应该能够帮助您恢复任何损坏的功能。