javascript - 访问属性 'Arbiter' 的权限被拒绝

标签 javascript facebook

我有一个 iframe FB 应用程序。我们在三个地方开发它:我的本地主机,我们测试应用程序的阶段服务器,生产服务器。 Localhost 和 production 有 HTTPS。 Localhost 和 stage 应用程序启用了沙盒模式。所有版本的应用程序都是相同的,代码是相同的。阶段和生产是完全相同的服务器机器,除了 HTTPS 之外具有相同的设置。

现在仅在我的阶段服务器应用程序中发生了什么:当我单击应该调用 jQuery UI 对话框的地方时,它会在我的 Firebug 中引发以下错误:Permission denied to access property “仲裁者”。然后没有对话被召唤。它是在这段代码中以某种方式动态加载的 canvas_proxy.php 引发的:

/**
 * Parses the fragment and calls Arbiter.inform(method, params)
 *
 * @author ptarjan
 */
function doFragmentSend() {
  var
    location = window.location.toString(),
    fragment = location.substr(location.indexOf('#') + 1),
    params = {},
    parts = fragment.split('&'),
    i,
    pair;

  lowerPageDomain();

  for (i=0; i<parts.length; i++) {
    pair = parts[i].split('=', 2);
    params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
  }
  var p = params.relation ? resolveRelation(params.relation) : parent.parent;

  // The user is not inside a frame (probably testing on their own domain)
  if (p == parent || !p.Arbiter || !p.JSON) {
    return;
  }

  p.Arbiter.inform(
    'Connect.Unsafe.'+params.method,
    p.JSON.parse(params.params),
    getBehavior(p, params.behavior));
}

if (p == parent || !p.Arbiter || !p.JSON) { 引发了它。我链接 JS API 的脚本代码如下所示:

<script src="https://connect.facebook.net/en_US/all.js#appId=APPID"></script>

有人知道为什么会发生这种情况吗?我找到了 thisthis ,但这些问题似乎对我没有帮助(或者我只是不明白)。可能是因为 HTTPS?怎么前天就成功了?我很绝望:-(

最佳答案

每当您收到权限被拒绝的消息并且您正在处理框架或 iframe 时,这就是文档域问题。一个文档属于域 x,另一个属于域 y。请注意 www.domain.com 和 domain.com 不是同一个文档域!

当您从一个框架文档进入另一个框架文档的 DOM 时(无论是为了更改页面元素的值还是只是读取某些 Conceal 变量或 url 等的值),您将得到除非两个框架文档都来自相同/相同的域,否则权限被拒绝消息。

因此,如果一个框架属于 www.mydomain.com 而另一个框架恰好只是 mydomain.com 或 www.someotherdomain.com,你就会得到该死的权限被拒绝的错误。

而且没有办法绕过它。如果有的话,身份盗窃问题会立即飙升。

关于javascript - 访问属性 'Arbiter' 的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757964/

相关文章:

facebook - Facebook 评论社交插件是否有可以添加评论的 API?

javascript - 谷歌地图上的指向标记@change

Javascript:为什么我会收到此 Uncaught TypeError:无法读取 null 的属性 'addEventListener'?

javascript - 如何让 JavaScript 查询以 HTML 形式显示结果

javascript - Facebook 连接帮助

android - 使用 facebook graph api 发布时出现错误 OAuthException 2500

android - 使用 ParseFacebookUtil.login() 登录 facebook 返回空用户和异常无效日期

javascript - 何时加载浏览器框架脚本 (e10s)?

javascript - 在中间列悬停时显示 HTML 表侧列

甲骨文钱包 : Facebook Non valid certificate