我上周推出了一个应用程序并且已经注意到,因为在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 OVerflow问题 Facebook JavaScript SDK over HTTPS loading non-secure items 更新了我的代码 - 但是,这还没有解决问题。我在2012-01-19发现了以下错误报告,其中显示了我面临的相同症状。越过这个手指将很快被Facebook修复!
https://developers.facebook.com/bugs/192507854181725?browse=search_4f2bbd593f8798794293016
答案 0 :(得分:3)
//js.src = "//connect.facebook.net/en_US/all.js";
js.src = "//tabletr.herokuapp.com/js/all.js";
您似乎将http://connect.facebook.net/en_US/all.js
复制到本地服务器
https://tabletr.herokuapp.com/js/all.js
。
http://connect.facebook.net/en_US/all.js
和https://connect.facebook.net/en_US/all.js
的差异显示了几个分别在其中硬编码“http”和“https”的网址。如果你想在本地复制那些,那么你将需要托管两个独立的版本,比如Facebook。
但我建议只指一下官方的Facebook脚本,这样你就不必一直同步了。
答案 1 :(得分:0)
完全可能。
您的错误消息指出:
域,协议和端口必须匹配
您正在使用
中包含的脚本访问框架来自带有网址
的框架所以肯定看起来像http / https不匹配。我认为这不会扩展到子域,但这可能会有问题。
但这是你的代码还是框架?基本上,您需要确保两种协议在安全或常规浏览方案中匹配。
答案 2 :(得分:0)
Facebook已承认这是一个错误并分配给工程师。您可以在https://developers.facebook.com/bugs/192507854181725?browse=search_4f2bbd593f8798794293016
跟踪进度