如何强制Disqus对所有请求使用HTTPS?

doc*_*nge 5 ssl https disqus

我正在使用以下代码在通过HTTPS加载的页面上加载Disqus,如本答案所示.

  <div id="disqus_thread"></div>
  <script type="text/javascript">
      var disqus_shortname = 'our-shortname';
      (function() {
          var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
          dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js?https';
          (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
      })();
  </script>
Run Code Online (Sandbox Code Playgroud)

请注意,我已将embed.js的请求更改为https而不是http,并且我已添加?https到请求的末尾,我认为应该强制使用HTTPS.

初始请求按计划通过HTTPS进行,但是它通过HTTP发出了一个辅助请求,Chrome很讨厌(我得到红色十字架挂锁图标).

来自Chrome控制台:

The page at https://our-website.com/blog-post-name ran insecure content from http://juggler.services.disqus.com/event.js?thread=635675380&forum=our-shortname...[long query string]
Run Code Online (Sandbox Code Playgroud)

这是让Disqus在所有请求中使用ssl的正确方法,还是我错过了一步?

谢谢.

sto*_*kli 6

这似乎是Disqus本身的一个问题.我们在几个Drupal网站上使用相同的方法通过SSL工作得很好,但是最近有两个版本已经开始在IE和Chrome中引发SSL警告,正如您所描述的那样.

我做了一些挖掘,我发现在embed.js中定义并在thread.js中调用的DISQUS.useSSL函数更新了一些URL(特别是["disqus_url","realtime_url","uploads_url"])如果在设置中找到https,则通过用https替换其URL中的http来对json设置对象.juggler_url没有得到相同的处理,因此没有通过SSL加载更新.我不确定juggler的目的是什么,但似乎该URL(http://juggler.services.disqus.com/)在任何情况下都不会通过SSL加载,所以即使它的url被更改为https,它仍然行不通.

所以也许Disqus最近发生了变化,因为我们之前有这个工作吗?我们正在接受它们,因为这似乎不是我们最终的配置问题......

更新:

Apaprently Disqus推出了一项不支持SSL的新服务.这就是生成不安全加载的额外脚本,从而触发安全警告的原因.我们为我们的特定帐户禁用了这项新服务(他们没有告诉我们名称),现在SSL再次按预期工作.因此,解决方案是让他们让您的帐户符合SSL标准,并且应该处理它.