2

我正在尝试将 Facebook 评论小部件添加到通过 SSL/HTTPS 提供的页面。小部件工作正常,但当我尝试在 IE7 或 IE8 中加载页面时,我收到“混合内容”安全警告。

我已经检查并确认我们没有在页面中引用任何不安全的资源。删除 facebook 评论小部件会使警告消失。使用提琴手,我试图查明被引用的资源,但据我所知,没有任何东西被拉过 http。我已经用一个最小的复制案例确认了这个问题,该案例只有页面上的评论小部件。

<!DOCTYPE html>
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>
      Test FB Comments
    </title>
  </head>
  <body>
    <div class="fb-comments" data-href="https://www.example.com/fb_minimal.html" data-num-posts="10" data-width="470" data-colorscheme="light"></div>
    <div id="fb-root"></div>
    <script type="text/javascript">
      window.fbAsyncInit = function () {
        FB.init({ appId: 'MY_FACEBOOK_APP_ID', status: true, cookie: true,
          xfbml: true
        });
      };
      (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      } ());
    </script>
  </body>
</html>

这会在其他浏览器(Chrome、Firefox、IE9 及更高版本)中加载而不会发出警告。

我已经查看了我的 facebook 应用程序设置,一切似乎都配置正确,虽然我是 facebook 集成的新手,所以也许我错过了一些东西。

我看过这个线程,Facebook JavaScript SDK over HTTPS loading non-secure items,但没有任何建议有任何效果。我怀疑这个问题有所不同,因为我在其他浏览器中也没有看到警告。

任何见解将不胜感激。

4

1 回答 1

1

听起来你做的一切都是正确的,甚至使用 Fiddler 检查请求。当您仍然无法看到正在发生的事情时,这绝对是非常令人沮丧的。

我没有给你一个明确的答案,但我可以提出一种可能性

众所周知,IE8 及更低版本在 iframe 中有空白页时会引发此类错误。例如,框架是使用 javascript 创建的,但没有加载任何内容,或者about:blank作为 URL 填充。

我有一种感觉,如果您对错误感到满意(例如 404 错误),也可能会发生这种情况,但我对此不太确定。这绝对是空白内容的已知错误。

发生的情况是,当 IE 验证页面的安全性时,它错误地将页面中的相对 URL 与about:blankURL 组合在一起,导致 URL 像about:/myimage.jpg警告。

您可以在此处查看有关此错误的另一个讨论:由于背景图像而避免 IE 中的“混合内容”警告的确切规则是什么?

那里描述的解决方案是使您的所有 URL 成为绝对 URL,包括完整的域和协议。

我希望这会有所帮助。

于 2012-10-31T22:29:41.650 回答