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

2024-04-21

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

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

about:blank 页面显示不安全内容http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b 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。

不安全的 JavaScript 尝试通过 URL 访问框架http://www.mydomain.com/control/myfacebookapp/ http://www.mydomain.com/control/myfacebookapp/来自带有 URL 的框架http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b 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。 请求访问的框架将“document.domain”设置为“facebook.com”, 但正在访问的框架却没有。两者都必须设置“document.domain” 为相同的值以允许访问。
xd_arbiter.php:18

不安全的 JavaScript 尝试通过 URL 访问框架http://www.mydomain.com/control/myfacebookapp/ http://www.mydomain.com/control/myfacebookapp/来自带有 URL 的框架http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b 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。 请求访问的框架将“document.domain”设置为“facebook.com”, 但正在访问的框架却没有。两者都必须设置“document.domain” 为相同的值以允许访问。 xd_arbiter.php:18

2.当我尝试http url(http://apps.facebook.com/myfbappnamespace/ http://apps.facebook.com/myfbappnamespace/),控制台中显示的错误是:

不安全的 JavaScript 尝试通过 URL 访问框架http://apps.facebook.com/myfbappnamespace/ http://apps.facebook.com/myfbappnamespace/来自带有 URL 的框架https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel=…Fcontrol%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26。 请求访问的帧具有“https”协议,该帧是 访问的协议为“http”。协议必须匹配。

现在,当我登录我的 Facebook 帐户查看这些错误发生了什么时,它们就消失了,只是有时而已。我知道我在查询中使用了“大多数时候”和“有时”,但这正是我身上发生的事情。我还搜索了论坛并意识到 Facebook 已经修复了这个应该是 chrome 特定的老问题。我已确保我的 FB.init 和其他调用是特定于 location.protocol 值的。还在画布 url (http) 和安全画布 url (https) 中配置了正确的值。还尝试了这两种设置: 帐户设置 -> 安全 -> 安全浏览 -> (启用和禁用)

如果我在某处遗漏了某些东西,有人可以帮忙吗?


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

  • 协议必须相同(因此尝试访问 iframe 的页面必须与提供 iframe 的站点具有相同的协议),因此,如果您在沙盒模式(http 而不是 https)下测试您的应用程序,请禁用“安全”测试帐户的“浏览”模式
  • 频道网址打开FB.init() (见下面的代码)
  • 启用 apache 的 headers mod 并将以下行放入您的 .htaccess 中
  • put the <div id="fb-root"></div>在 body 标记之后,如 fb 文档中所述:https://developers.facebook.com/docs/reference/javascript/ https://developers.facebook.com/docs/reference/javascript/
  • 尝试将所有自动登录代码放在用户操作之后(例如单击登录按钮)
  • 从 Canvas URL 中删除尾部斜杠(在应用程序→设置中),例如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>

代码为channels issue:

FB.init({
    appId: '1234567890',
    status: true,
    cookie: true,
    xfbml: true,
    channelUrl : '//yoursite.com/channel.html'
});

The 频道.html您的服务器提供的应包含这一行:

<script src="//connect.facebook.net/en_US/all.js"></script>

EDIT

关于您的第一个问题:

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.

这是一个预期的异常,用于测试条件 - 这没有副作用,所以不必关心它。

请参考这个问题:不安全的 JavaScript 尝试访问带有 URL 的框架:域、协议和端口必须匹配。 https://stackoverflow.com/questions/10577590/unsafe-javascript-attempt-to-access-frame-with-url-domains-protocols-and-ports

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐