IE7&;中基于HTTPS/SSL的Facebook评论小部件安全警告;IE8

IE7&;中基于HTTPS/SSL的Facebook评论小部件安全警告;IE8,ssl,https,internet-explorer-8,internet-explorer-7,facebook-comments,Ssl,Https,Internet Explorer 8,Internet Explorer 7,Facebook Comments,我正在尝试将Facebook评论小部件添加到通过SSL/HTTPS提供服务的页面。小部件工作正常,但当我尝试在IE7或IE8中加载页面时,会收到“混合内容”安全警告 我已经检查并验证了我们没有引用页面中任何不安全的资源。删除facebook评论小部件会使警告消失。使用fiddler,我试图精确定位被引用的资源,但据我所见,http上没有任何内容。我已经用一个最小的repo案例确认了这个问题,这个案例页面上只有comments小部件 <!DOCTYPE html> <html l

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

我已经检查并验证了我们没有引用页面中任何不安全的资源。删除facebook评论小部件会使警告消失。使用fiddler,我试图精确定位被引用的资源,但据我所见,http上没有任何内容。我已经用一个最小的repo案例确认了这个问题,这个案例页面上只有comments小部件

<!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>

测试FB评论
window.fbAsyninit=函数(){
FB.init({appId:'MY_FACEBOOK_APP_ID',状态:true,cookie:true,
xfbml:对
});
};
(功能(){
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);
} ());
在其他浏览器(Chrome、Firefox、IE9及更高版本)中加载时不会发出警告

我已经检查了我的facebook应用程序设置,所有配置似乎都是正确的,尽管我是facebook集成的新手,所以我可能错过了一些东西

我看过这个帖子,但是没有一个建议有任何效果。我怀疑这个问题与此不同,因为我在其他浏览器中也没有看到警告


如果您有任何见解,我们将不胜感激。

听起来您做的一切都很好,甚至可以使用Fiddler检查请求。当你仍然看不到正在发生的事情时,肯定会非常沮丧

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

IE8及以下版本在iframe中有一个空白页面时会抛出类似的错误。例如,框架是使用javascript创建的,但没有加载任何内容,或者使用
about:blank
作为URL填充

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

发生的情况是,当IE验证页面的安全性时,它错误地将页面中的相对URL与
about:blank
URL组合在一起,导致类似
about:/myimage.jpg
的URL,然后它将其视为HTTPS安全区域之外,因此您会收到混合内容警告

您可以在此处看到关于此错误的另一个讨论:

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


我希望这能有所帮助。

谢谢你的建议。我以前不知道IE8的这个问题。这似乎是可能的原因,但如果是Facebook的代码创建了空的iFrame,我不确定我是否可以对此做些什么。不过我要看看。