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

2019-07-19 23:17发布

我的是基于画布上FB应用。 面对一个问题,无论在Chrome和Firefox,(虽然通常铬):

1.当我打我的批准FB应用程序的安全网址新的隐身Chrome视窗(上https://apps.facebook.com/myfbappnamespace/ ),下面的错误来,只有在第一次,当我刷新页面错误走了(大部分时间)

在有关页面:空白显示不安全的内容http://static.ak.facebook.com/connect/xd_arbiter.php?version=18#cb=f2e4fe7b ... os.com%2Ff4aeadb2&域= www.mydomain.com&关系=父&错误=未知用户。

不安全的JavaScript尝试与URL访问框架http://www.mydomain.com/control/myfacebookapp/从框架与URL 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/从框架与URL 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/从框架与URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=18#channel= ... F控制%2Ffacebookappchannelurl%3Ffb_xd_fragment%23xd_sig%3Df23e84e85c%26。 帧请求访问具有“https”时的协议,被访问的帧具有的“http”的一个协议。 协议必须匹配。

现在,当我登录到我的FB帐户,看看这些错误会发生什么情况,他们都走了,再只是有时。 我知道,我使用“大部分时间”和“有时”在这里我的查询,但是这也正是与我发生的事情。 我也搜索论坛,并认识到FB已经修正了这应该是铬具体这个老问题。 我已确保我FB.init和其他电话是location.protocol价值的具体。 还配置在画布URL(HTTP)和安全画布URL(HTTPS)正确的价值观。 也试过同时与设置:帐户设置 - >安全 - >安全浏览 - >(启用和禁用)

可有人请帮助,如果我失去了一些东西的地方?

Answer 1:

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

  • 协议必须是相同的(这样试图访问IFRAME必须具有提供的iframe网站的同一协议的页面),所以如果你在沙盒模式下测试您的应用程序(HTTP,而不是HTTPS),禁用“安全浏览”您的测试帐户的模式
  • channelUrl上FB.init() 见下面的代码)
  • 使国防部的apache的头,并把下面的线在你的.htaccess
  • <div id="fb-root"></div>如在FB文档这里解释身体标记后: https://developers.facebook.com/docs/reference/javascript/
  • 尽量把所有的自动登录代码用户操作后(如点击登录按钮)
  • 请从画布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>

规范渠道的问题:

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.

这是一个用来测试的条件预期例外 - 这没有任何的副作用,所以不要在意它。

请参考这个问题: 不安全的JavaScript尝试与URL访问框架:域,协议和端口必须匹配。



Answer 2:

在我来说,我有一个“类似Facebook的盒子”,在“_layout”的观点,我有自定义一些CSS吧,在global.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的行为。

  1. 删除该行的CSS代码解决了这个问题。
  2. 移动该行的CSS代码到它具有“类似Facebook的盒子”内的<style>标记的特定页面。


文章来源: Facebook: Unsafe JavaScript issue (document.domain values should be same)