github 页上 Disqus 的 CSP 错误

CSP error with Disqus on github pages

我有一个 jekyll based blog on github pages 评论由 Disqus 提供。或者更准确地说:他们过去常常由 Disqus 提供服务。我发现,Disqus 的东西加载失败。

在 Chrome 中,我在控制台中看到以下错误:

Refused to load the script 'data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoJdmFyIG5vb3BmbiA9IGZ1…gpKTsKCQkJfQoJCX0KCX0pKCk7Cgl3aW5kb3cuX2dhcSA9IGdhcS5xZiA9IGdhcTsKfSkoKTs=' because it violates the following Content Security Policy directive: "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 横幅或 privace badger 导致了问题,但 Privacy Badger 配置为仅阻止 google 网站上的分析,甚至允许这样做,也没有成功工作。

当 运行 jekyll serve 在本地时,一切都按预期工作。

我排除了 cookie 横幅作为问题的根源,暂时删除它,对 Disqus 没有任何影响

我不认为 this SO question 是同一个问题,因为我没有 iframe。

我的实际问题由三部分组成:

  1. 如何调试这样的问题?
  2. 问题的根本原因是什么?
  3. 我该如何解决?

在您的 disqus_config 中,您有:

this.page.url = 'http://blog.schauderhaft.dehttp://blog.schauderhaft.de/';

因为硬编码基数 URL 和 | prepend: site.url in _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 时无法正确测试的阻止程序;没有来源很难说。