我们正在开发嵌入式应用程序(作为 IFRAME 注入我的网站)使用的 Javascript SDK,以帮助他们使用一些资源,例如加载一些对话框:例如授权对话框或共享框(如 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 加载,但嵌入式应用程序必须始终使用HTTPS 提供服务。为了让easyXDM注入的内部iframe与我的站点通信,两个url中的主机和协议必须匹配,否则会出现同源策略违规。
问题:我如何告诉从外部应用程序 URL 加载的 SDK 中的代码,外部窗口(我的站点)正在使用 http 或 https,以使用相同的协议呈现 embedded_provider.html,从而允许 JS 通信他们两个之间?
我能想到的唯一解决方案是以某种方式通知嵌入式应用程序我们当前正在从 http / https 浏览,然后它可以正确实例化它(使用标志 use_https 左右),但我宁愿不强制应用程序来了解我们正在使用的协议。
你知道还有其他选择吗?
谢谢!