【发布时间】:2013-02-16 08:47:45
【问题描述】:
我们正在开发一个 Javascript SDK,供嵌入式应用程序(作为 IFRAME 注入我的网站)使用,以帮助它们使用一些资源,例如加载一些对话框:例如授权对话框或共享框(如 Facebook)。
我们的 SDK 使用 easyXDM 或多或少像这样工作:
HTML 页面
-------------------------------------------------- -------------------------------------------------- ------------
| http / https:www.mysite.com/embedded-app/
| (一些 JS 类)
|
|- - - - - | -------------------------------------------------- -------------------------------------------------- --------------
|- - - - - | (IFRAME)
|- - - - - | https:// www.some-embedded-app-domain.com/page.html
|- - - - - | (从使用easyXDM的“http/https:www.mysite.com/sdk.js”加载并实例化SDK)
|- - - - - |
|- - - - - | - - - - - |-------------------------------------------- -------------------------------------------------- -----
|- - - - - | - - - - - | (easyXDM注入的IFRAME)
|- - - - - | - - - - - | http / https:www.mysite.com/embedded_provider.html
|- - - - - | - - - - - | (与 window.top 通信以使用那些 wndow.top JS 类)
|- - - - - | - - - - - |
|- - - - - | - - - - - |
|- - - - - | - - - - - |
|- - - - - | - - - - - |
我的网站可以同时使用 http/https 加载,但嵌入式应用程序必须使用 always HTTPS 提供服务。为了让easyXDM注入的内部iframe能够与我的站点通信,两个url中的主机和协议必须匹配,否则会出现同源策略违规。
问题:我如何告诉从外部应用程序 URL 加载的 SDK 中的代码,外部窗口(我的站点)正在使用 http 或 https,以使用相同的协议呈现 embedded_provider.html,因此允许两者之间的JS通信?
我能想到的唯一解决方案是以某种方式通知嵌入式应用程序我们当前正在从 http / https 浏览,然后它可以正确实例化它(使用标志 use_https 左右),但我更愿意不要强迫应用知道我们正在使用的协议。
你知道其他选择吗?
谢谢!
【问题讨论】:
-
使用 // 代替 http:// 或 https://
标签: javascript sdk cross-domain same-origin-policy easyxdm