首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Facebook:不安全的JavaScript问题(document.domain值应该相同)

Facebook:不安全的JavaScript问题(document.domain值应该相同)
EN

Stack Overflow用户
提问于 2013-02-15 10:20:40
回答 1查看 48.6K关注 0票数 24

我的是一个基于画布的FB应用程序。在Chrome和Firefox上都面临一个问题(尽管通常是Chrome):

1.当我在一个新的匿名Chrome窗口(https://apps.facebook.com/myfbappnamespace/)上点击我批准的fb应用程序安全URL时,下面的错误只是第一次出现,当我刷新页面时,错误就消失了(大多数情况下)

空页显示来自arbiter.php?version=18#cb=f2e4fe7b…的不安全内容。os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user. 不安全的JavaScript试图使用URL http://www.mydomain.com/control/myfacebookapp/从具有URL arbiter.php?version=18#cb=f2e4fe7b…的帧访问帧os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=unknown_user.请求访问的帧将“document.domain”设置为“facebook.com”,但是被访问的帧没有。两者都必须将'document.domain‘设置为相同的值,以允许访问。 xd_arbiter.php:18 不安全的JavaScript试图使用URL http://www.mydomain.com/control/myfacebookapp/从具有URL arbiter.php?version=18#cb=f2e4fe7b…的帧访问帧os.com%2Ff4aeadb2&domain=www.mydomain.com&relation=parent&error=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/从具有URL arbiter.php?version=18#channel=…的帧访问帧Fcontrol%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26.请求访问的帧具有'https‘协议,被访问的帧具有'http’协议。协议必须匹配。

现在,当我登录到我的fb帐户,看看这些错误发生了什么,它们就消失了,只是有时候。我知道我在这里使用的是“大部分时间”和“有时”,但这正是我正在发生的事情。我还搜索了论坛,并意识到,fb已经解决了这个旧的问题,应该是铬的具体。我已经确保了我的FB.init和其他调用是特定于location.protocol值的。还在画布url (http)和安全画布url (https)中配置了正确的值。也尝试了两个设置:帐户设置、->安全、->安全浏览-> (已启用和禁用)

如果我在某个地方漏掉了什么东西,谁能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-03 10:25:10

有很多可能的问题。尝试使用以下解决方案之一:

  • 协议必须是相同的(因此试图访问iframe的页面必须具有传递iframe的站点的相同协议),因此,如果您在沙箱模式(http而不是https)中测试应用程序,则禁用测试帐户的“安全浏览”模式。
  • channelUrl on FB.init() (见下面的代码)
  • 启用apache的头模块,并将下面的行放在.htaccess中
  • <div id="fb-root"></div>放在body标记之后,如fb文档中解释的那样:https://developers.facebook.com/docs/reference/javascript/
  • 尝试将所有自动登录代码放在用户操作之后(如单击登录按钮)
  • 从Canvas (在应用程序http://yoursite.com?设置中)删除尾随斜杠
  • 编辑您的<html>标记如下:<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="https://www.facebook.com/2008/fbml">

.htaccess代码

代码语言:javascript
运行
复制
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

通道的代码问题:

代码语言:javascript
运行
复制
FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

服务器交付的channel.html应该包含以下一行:

代码语言:javascript
运行
复制
<script src="//connect.facebook.net/en_US/all.js"></script>

编辑

关于你的第一期:

代码语言:javascript
运行
复制
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.

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14892556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档