Facebook应用程序 - 无声"协议必须匹配"错误

1''*_*1'' 5 https iframe facebook http facebook-login

这是我目前的Facebook应用程序登录流程(请参阅此答案以获得解释). logout()并且login()是在用户注销或登录时呈现页面的虚拟函数.

window.fbAsyncInit = function() { 
    FB.init({
        appId: '...',
        channelUrl: window.location.protocol + '//' + window.location.host + '/channel.html',
        status: false,
        cookie: true,
        xfbml: false,
        oauth: true
    });

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            login(response);
        } else {
            FB.Event.subscribe('auth.login', function(response) {
                login(response);
            });
            logout();
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

使用此登录流程,我不必在用户登录时重新加载页面,但是我收到了无提示错误:

阻止具有原点" http://www.facebook.com "的框架访问具有原点" https://s-static.ak.facebook.com " 的框架.请求访问的帧具有"http"协议,被访问的帧具有"https"协议.协议必须匹配.

我假设重新加载页面会将持有应用程序的iframe传输到https://协议,但我真的不明白为什么或这意味着什么.为什么会出现这种错误,是否需要关注?

ast*_*anu 5

这在大多数浏览器中都是一个安全问题.您无法从http页面获取https链接

可能的Facebook副本在Chrome中提供"不安全的JavaScript尝试访问带URL的框架"错误