gpt4 book ai didi

Facebook JavaScript SDK 通过 HTTPS 加载非安全项目

转载 作者:行者123 更新时间:2023-11-30 05:13:47 24 4
gpt4 key购买 nike

我有一个使用 Facebook Connect.js 的 Facebook 应用程序.

我正在通过 HTTPS 运行我的应用程序。本站所有内容均来自https://除了一些必须包含在 Facebook 的 Connect.js 中的内容

问题是我收到警告消息说页面中有不安全的项目。

我已经使用 Chrome 检查了正在加载的脚本的开发人员工具/网络选项卡,以查看正在加载的文件以及从何处加载。

我能看到的唯一一个通过 HTTP 而不是通过 HTTPS 加载的是一个名为 http://static.ak.facebook.com/connect/canvas_proxy.php 的文件。 .

如何强制此文件使用 HTTPS?

最佳答案

长话短说

在调用 FB.init 之前将 FB._https 设置为 true。像这样:

FB._https = true;
FB.init({
/* your app id and stuff */
});

解释

如果您对 Facebook JavaScript SDK 进行压缩,您会发现它基本上是一个具有大量属性的对象文字。其中一个属性是 _https,它是一个 bool 值。此属性确定在发出 API 请求时使用哪一组 URL(存储在 FB._domain 中)。 Facebook 似乎为每种类型的 API 请求保留了两组 URL——一个安全 URL 和一个非安全 URL——然后使用一个名为 getDomain() 的切换函数来确定使用哪个提出要求时。

JavaScript SDK 引起安全警告的原因是 FB._https 属性的定义方式。这是截至 2011 年 8 月 24 日的当前定义方式:

_https: (window.name.indexOf('_fb_https') > -1)

显然 Facebook 认为如果 window.name 属性中有 _fb_https,那么它一定是一个安全的应用程序。这显然是不正确的。真正的测试应该是这样的:

_https: window.location.protocol == "https:"

不幸的是,SDK 不是开源的,甚至没有很好的文档记录,所以我无法提交此更改的拉取请求:P。短期内,在调用 FB.init 之前手动将 FB._https 设置为 true 应该可以解决问题。

关于Facebook JavaScript SDK 通过 HTTPS 加载非安全项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com