5

我正在使用以下代码在通过 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>

请注意,我已将 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]

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

谢谢。

4

4 回答 4

6

这似乎是 Disqus 本身的一个问题。我们让 Disqus 通过 SSL 在几个 Drupal 站点中使用相同的方法正常工作,但正如您所描述的,最近两个站点都让 Disqus 开始在 IE 和 Chrome 中引起 SSL 警告。

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

所以也许 Disqus 最近做出了改变,因为我们之前有这个工作?我们正在与他们一起解决这个问题,因为这似乎不是我们的配置问题......

更新:

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

于 2012-04-04T16:11:29.847 回答
2

找到了这篇文章,它提供了解决方案: http: //help.disqus.com/customer/portal/articles/542119-can-disqus-be-loaded-via-https-

基本上,使用 Disquss 2012 是不可能的(还),但将其关闭并更改嵌入 src,使其使用 https:// 并添加 ?https 参数:

dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js?https';
于 2012-08-21T08:44:40.373 回答
1

在过去的几个月里,我断断续续地遇到了这个问题,并且被迫完全禁用了 Disqus。最初,我联系了 Disqus,看看他们是否可以在他们这边进行禁用非 SSl 兼容功能的开关,这工作了一段时间,但混合内容问题不断再次出现。

似乎发生的情况是,尽管 Disqus 强制其 count.js javascript 的 https 版本,count.js 仍出于某种原因重定向到 mediacdn.disqus.com 而不是 securecdn.disqus.com。如果在插件编辑器中手动附加 ?https 以强制重定向到 securecdn.disqus.com,则问题会在第一次调用 CDN 时消失,但在随后调用 CDN 时会添加查询字符串 ?https 到计数中。 js 调用,重定向只是恢复到 mediacdn.disqus.com。我已经尝试过很多次了。

关于这个问题的烦人之处在于,我的网站上创建混合内容通知的 SSL 页面甚至没有评论部分。所以 Disqus 在页面上不必要地加载了它的 javascript。

我喜欢 Disqus,但令我难以置信的是,他们不会通过允许用户有选择地禁用 javascript 或通过实施适用于所有情况的安全 cdn 版本来解决此问题。我希望他们能解决这个问题。

他们还告诉我 Disqus 2012 不支持 HTTPS(尽管将来会支持)。

于 2012-07-14T02:01:55.857 回答
0

显然 Disqus 推出了一项不支持 SSL 的新服务。这就是生成不安全加载的额外脚本的原因,从而触发了安全警告。

于 2019-01-13T20:38:36.627 回答