Mine是一款基于画布的FB App。面对Chrome和Firefox上的问题,(虽然通常是Chrome):
1.当我在新的隐身Chrome窗口(https://apps.facebook.com/myfbappnamespace/)上点击我的已批准的fb应用安全网址时,以下错误仅在第一次出现,当我刷新页面时,错误消失了(大多数当时)
页面大约:空白显示不安全的内容 http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com%2Ff4aeadb2&安培;域= www.mydomain.com&安培;关系=父&安培;误差= unknown_user
不安全的JavaScript尝试使用URL访问框架 来自带框架的框架http://www.mydomain.com/control/myfacebookapp/ http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com%2Ff4aeadb2&安培;域= www.mydomain.com&安培;关系=父&安培;误差= unknown_user。 请求访问权限的框架'document.domain'为'facebook.com', 但被访问的框架没有。两者都必须设置'document.domain' 以相同的值允许访问。
xd_arbiter.php:18不安全的JavaScript尝试使用URL访问框架 来自带框架的框架http://www.mydomain.com/control/myfacebookapp/ http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com%2Ff4aeadb2&安培;域= www.mydomain.com&安培;关系=父&安培;误差= unknown_user。 请求访问权限的框架'document.domain'为'facebook.com', 但被访问的框架没有。两者都必须设置'document.domain' 到相同的值以允许访问。 xd_arbiter.php:18
2.当我尝试http url(http://apps.facebook.com/myfbappnamespace/)时,控制台中显示的错误是:
不安全的JavaScript尝试使用URL访问框架 来自带框架的框架http://apps.facebook.com/myfbappnamespace/ https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= ... F控制%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26。 请求访问的帧具有“https”协议,帧为 access具有'http'协议。协议必须匹配。
现在,当我登录我的fb帐户以查看这些错误会发生什么时,它们就会消失,有时只会消失。我知道我在查询中使用“大部分时间”和“有时”,但这正是我发生的事情。我也搜索了论坛并意识到fb已经修复了这个本来应该是特定于chrome的问题。我确保我的FB.init和其他调用是location.protocol值特定的。还在canvas url(http)和安全canvas url(https)中配置了正确的值。还尝试了两种设置: 帐户设置 - >安全 - >安全浏览 - > (已启用和已禁用)
如果我遗失某些地方,有人可以帮忙吗?
答案 0 :(得分:23)
有很多可能的问题。尝试使用以下解决方案之一:
FB.init()
上的channelUrl(请参阅下面的代码) <div id="fb-root"></div>
放在body标记之后,如fb doc中所述:https://developers.facebook.com/docs/reference/javascript/ http://yoursite.com?
<html>
标记,如下所示:<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">
.htaccess
的代码<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
频道代码问题:
FB.init({
appId: '1234567890',
status: true,
cookie: true,
xfbml: true,
channelUrl : '//yoursite.com/channel.html'
});
您的服务器提供的 channel.html 应包含以下一行:
<script src="//connect.facebook.net/en_US/all.js"></script>
修改强>
关于你的第一期:
The page at about:blank displayed insecure content from http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b…os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.
这是一个预期的异常,用于测试一个条件 - 这没有任何副作用,所以不关心它。
请参阅此问题:Unsafe JavaScript attempt to access frame with URL: Domains, protocols and ports must match.
答案 1 :(得分:0)
在我的情况下,我在“_Layout”视图中有一个“facebook-like-box”,我必须在 global.css 文件中为它自定义一些CSS。
.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe[style] { width: 100% !important; }
然后,当我尝试加载内容页面时,例如文章和新闻,它有一个Facebook的分享按钮,它开始给我这个错误:
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://localhost:51826" from accessing a frame with origin "http://static.ak.facebook.com". The frame being accessed set "document.domain" to "facebook.com", but the frame requesting access did not. Both must set "document.domain" to the same value to allow access.
不知何故,我认为这段CSS代码导致了这个问题(通过处于全局范围内),试图访问和修改我的共享按钮的iframe行为。