5

这是我当前的 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();
        }
    });
};

使用此登录流程,我不必在用户登录时重新加载页面,但出现静默错误:

阻止来源为“ http://www.facebook.com ”的框架访问来源为“ https://s-static.ak.facebook.com ”的框架。请求访问的帧具有“http”协议,被访问的帧具有“https”协议。协议必须匹配。

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

4

1 回答 1

5

这是大多数浏览器中的安全问题。您不能从 http 页面 ajax 链接

Facebook的可能重复在 Chrome 中给出“不安全的 JavaScript 尝试使用 URL 访问框架”错误

于 2013-08-05T13:07:10.047 回答