【问题标题】:Facebook sdk does insecure request to arbiter.phpFacebook sdk 对 arbiter.php 的请求不安全
【发布时间】:2013-02-05 11:55:40
【问题描述】:

我有一个 Facebook 应用程序,它从我的服务器加载为 Facebook 粉丝页面内的 iframe。 我使用 javascript sdk 来处理 facebook 身份验证。

当我通过http访问IE中的粉丝页面时,控制台显示以下https安全错误: SEC7111:HTTPS 安全受到http://static.ak.facebook.com/connect/xd_arbiter.php?version=18 的威胁

这会导致用户看到“不安全内容”警告。 我知道这与 IE 处理跨域 iframe 加载的方式有关。

更多细节:

  • 调用 FB.init 时发生(调用 FB.init 时 fb sdk 请求 xd_arbiter.php)
  • 仅在 IE(特别是 IE 9)中发生。 Chrome 或 FF 中没有安全警告。
  • 仅在通过 http 而不是 https 加载 facebook 时发生。我原以为会反过来……所以即使粉丝页面是通过 http 加载的,facebook 也必须通过 https 加载某些内容。

我尝试过的:

  • 在调用 init 之前设置 FB._https = true。 (不起作用,已弃用)
  • 确保通过 https(在 channel.html 中)加载 sdk。
  • 确保我对服务器发出的所有请求都是通过 https。

这是我对 init 的调用:

FB.init({
  appId      : '{$appid}',
  status     : true,
  cookie     : false,
  xfbml      : true,
  oauth      : true,
  channelUrl : '//my_url.com/channel.html'
});

还有channel.html的内容:

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

那么如何强制 sdk 通过 https 加载 xd_arbiter.php 以使警告消失?

我了解 sdk 不断发展,但我首先要确保我没有做错什么。

谢谢

【问题讨论】:

    标签: facebook oauth


    【解决方案1】:

    我建议您将所有资产都使用同一个协议,无论是 HTTP 还是 HTTPS。

    那么对于远程请求,你有没有考虑在你的服务器上创建一个 PHP 端点,这样你的 AJAX 请求就可以调用你的 PHP 脚本,而不是调用跨域 URL,它在同一个域上,然后让 PHP curl 到做跨域的东西?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多