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 ページから https リンクを ajax できない

Facebookの重複の可能性があり、Chrome で「安全でない JavaScript が URL でフレームにアクセスしようとしています」というエラーが表示される

于 2013-08-05T13:07:10.047 に答える