github页面上的Disqus与CSP错误

时间:2017-01-08 06:24:17

标签: github-pages disqus content-security-policy

我在jekyll based blog上有一个github pages,评论由Disqus提供。或者更确切地说:他们过去常常被Disqus服务。我发现,Disqus的东西无法加载。

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

  

拒绝加载脚本'数据: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被配置为仅阻止网站上的Google分析,甚至允许它,并不能使其工作。

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

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

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

我的实际问题包括三个部分:

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

1 个答案:

答案 0 :(得分:2)

disqus_config,您有:

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

由于硬编码的基本网址与| 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的情况下正确测试;没有消息来源很难分辨。