在 GitHub Pages 上使用 Disqus 出现 CSP 错误

3
我在Github Pages上有一个基于jekyll的博客,并使用Disqus提供评论。或者更精确地说:它们曾经由Disqus提供。我发现,Disqus无法加载。
在Chrome控制台中,我看到以下错误信息:
拒绝加载脚本'data:application / javascript; base64,(KGZ1bmN0aW9uKCkgewoJdmFyIG5vb3BmbiA9IGZ1...gpKTsKCQkJfQoJCX0KCX0pKCk7Cgl3aW5kb3cuX2dhcSA9IGdhcS5xZiA9IGdhcTsKfSkoKTs =)',因为它违反了以下内容安全策略指令:“script-src https://.twitter.com: https://a.disquscdn.com .services.disqus.com: https://c.disquscdn.com http://.twitter.com: https://apis.google.com/js/api.js http://a.disquscdn.com https://cdn.syndication.twimg.com/tweets.json https://.services.disqus.com: https://connect.facebook.net/en_US/sdk.js https://referrer.disqus.com/juggler/ 'unsafe-eval' a.disquscdn.com http://disqus.com https://ssl.google-analytics.com https://disqus.com”。
我最初认为Disqus在做一些愚蠢的事情,但我发现this article让我觉得我做错了什么,比如使用jquery来加载Disqus。但我不知道是什么导致了这个问题。
我另一个想法是,也许我的cookie横幅或Privacy Badger会导致问题,但Privacy Badger被配置为仅在该站点上阻止Google Analytics,即使允许它,也无法使它正常工作。
另外,当在本地运行jekyll serve时,一切都按预期工作。
通过暂时移除Cookie横幅,我排除了它作为问题源的可能性,但对Disqus没有影响。
我不认为this SO question是同样的问题,因为我没有iframe。
我的实际问题由三部分组成:
1. 如何调试这样的问题? 2. 问题的根本原因是什么? 3. 我该如何修复它?

1
我一直遇到这个问题。解决方法是关闭我的广告拦截器。 - Seph Reed
1个回答

3
在您的disqus_config中,您有以下内容:
this.page.url = 'http://blog.schauderhaft.dehttp://blog.schauderhaft.de/';

由于硬编码的基本URL和| prepend: site.url的组合_includes/disqus.html,导致问题出现:

this.page.url = 'http://blog.schauderhaft.de{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}';

这应该可以正常工作:

this.page.url = '{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}';

如果您禁用所有扩展程序,CSP 错误应该会消失。这可能是 Disqus 试图解决启用 CSP 时未正确测试的阻止程序的尝试;无法确定源代码。

谢谢Ryan,我自己找到了。我讨厌同时出现两个问题,其中一个会导致实际问题,但只有另一个会在日志中触发错误消息。 - Jens Schauder
请问能否举个例子,说明this.page.url应该是一个字符串?我没有使用Jekyll。 - Seph Reed
@SephReed:https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables#this.page.url - Ry-
非常奇怪的是,这不是安装过程中链接的帮助文档,而是一个非常笼统的文档,没有任何示例。 - Seph Reed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接