Небезопасная попытка JavaScript получить доступ к фрейму при использовании безопасного просмотра в Facebook
Я запустил приложение на прошлой неделе и с тех пор заметил, что в Chrome не всегда регулируется только высота моего холста. Я потратил кучу часов на изучение проблем и заметил, что иногда получаю следующую ошибку.
Unsafe JavaScript attempt to access frame with URL https://apps.facebook.com/tabletr/ from frame with URL
Теперь, зная кое-что о программировании, я понял, что это, вероятно, связано с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