我正在尝试将Facebook评论小部件添加到通过SSL / HTTPS提供的页面。小部件工作正常,但当我尝试在IE7或IE8中加载页面时,我收到“混合内容”安全警告。
我已经完成并验证我们没有引用页面中任何不安全的资源。删除Facebook评论小部件使警告消失。使用fiddler,我试图查明被引用的资源,但据我所知,没有任何东西被拉过http。我已经通过一个最小的repro案例确认了这个问题,该案例只有页面上的评论小部件。
<!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,但没有任何建议有任何影响。我怀疑这个问题有所不同,因为我也没有在其他浏览器中看到警告。
非常感谢任何见解。
答案 0 :(得分:1)
听起来你正在做正确的事,甚至用Fiddler检查请求。当你仍然无法看到正在发生的事情时,绝对非常令人沮丧。
我没有给你一个确定的答案,但我可以建议一种可能性
IE8及以下版本已知在iframe中有空白页面时会抛出这样的错误。例如,框架是使用javascript创建的,但没有加载任何内容,或者填充about:blank
作为URL。
我觉得如果你有错误的内容(例如404错误)也可能会发生,但我不太确定。这绝对是一个空白内容的已知错误。
当IE验证网页的安全性时会发生错误,它会错误地将您网页中的相对网址与about:blank
网址相关联,从而生成about:/myimage.jpg
之类的网址,然后将其视为在HTTPS安全区域之外,因此您会收到混合内容警告。
您可以在此处看到此错误的另一个讨论:What exactly are the rules for avoiding the "mixed content" warning in IE due to background images?
此处描述的解决方案是将所有网址设为绝对网址,并包含完整的域名和协议。
我希望有所帮助。