Небезопасная попытка JavaScript получить доступ к фрейму при использовании безопасного просмотра в Facebook

Я запустил приложение на прошлой неделе и с тех пор заметил, что в Chrome не всегда регулируется только высота моего холста. Я потратил кучу часов на изучение проблем и заметил, что иногда получаю следующую ошибку.

Unsafe JavaScript attempt to access frame with URL https://apps.facebook.com/tabletr/ from frame with URL

http://static.ak.facebook.com/connect/canvas_proxy.php?version=3#behavior=p&method=getPageInfo&params=%7B%22channelUrl%22%3A%22https%3A%2F%2Fs-static.ak.fbcdn .net% 2Fconnect% 2Fxd_proxy.php% 3Fversion% 3D3% 23cb% 3Df3782154e% 26origin% 3Dhttps% 253A% 252F% 252Ftabletr.herokuapp.com% 252Ff2951037b% 26relation% 3Dtop.frames% 255Biframe_canvas_fb_https% 255D% 26transport% 3Dpostmessage% 22% 2C % 22frame% 22% 3A% 22iframe_canvas_fb_https% 22% 7D и отношение = верхняя, Домены, протоколы и порты должны совпадать.

Теперь, зная кое-что о программировании, я понял, что это, вероятно, связано сhttps а такжеhttp используется взаимозаменяемо. Я получаю сообщение об ошибке (иногда) с безопасным просмотром «вкл» на Facebook и никогда с «выключенным».

Но что я нахожу действительно странным, так это то, что эта проблема возникает время от времени при просмотре по HTTPS. Я до сих пор не нашел ни одного паттерна для возникающей проблемы, или мой код работает как задумано. Я знаю, что здесь есть несколько постов на эту тему, и я попробовал несколько обходных путей, но ни один, похоже, не решил мою проблему. Вот часть моего кода

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '<myid>', // App ID
            channelUrl : '//tabletr.herokuapp.com/channel.php', // Channel File
            status     : false, // Check login status
            cookie     : true, // Enable cookies to allow the server to access the session
            xfbml      : false  // Parse XFBML
        });

        // Additional initialization code here
        FB.Canvas.setSize({ height: 1200 });
    };

    // If I comment out this function I don't get any unsafe URL errors
    // anymore. I'm guessing that the include of the JavaScript code either
    // fails to use the right protocol or is faulty in its implementation
    // by Facebook. My money is on the former.
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        //js.src = "//connect.facebook.net/en_US/all.js";
        js.src = "//tabletr.herokuapp.com/js/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
</script>

Как я могу это исправить? Я из них, если честно. Может быть, моя реализация файла канала неверна?

Обновленный код
<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '<myid>', // App ID
            channelUrl : '//tabletr.herokuapp.com/channel.php', // Channel File
            status     : false, // Check login status
            cookie     : true, // Enable cookies to allow the server to access the session
            xfbml      : false  // Parse XFBML
        });

        // Additional initialization code here
        FB.Canvas.setSize({ height: 1200 });
    };

    // If I comment out this function I don't get any unsafe URL errors
    // anymore. I'm guessing that the include of the JavaScript code either
    // fails to use the right protocol or is faulty in its implementation
    // by Facebook. My money is on the former.
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        //js.src = "//tabletr.herokuapp.com/js/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
</script>

Я обновил свой код, основываясь на вопросе Stack OVerflowFacebook JavaScript SDK через HTTPS загрузка незащищенных элементов - это, однако, еще не решило проблему. Я обнаружил следующий отчет об ошибке 2012-01-19, в котором показаны те же симптомы, с которыми я сталкиваюсь. Скрестив пальцы, это будет исправлено в Facebook в ближайшее время!

https://developers.facebook.com/bugs/192507854181725?browse=search_4f2bbd593f8798794293016

Ответы на вопрос(4)

Ваш ответ на вопрос