【发布时间】: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 不断发展,但我首先要确保我没有做错什么。
谢谢
【问题讨论】: