我們正在開發一個由嵌入式應用程序(在我的網站中註冊爲IFRAME)使用的Javascript SDK,以幫助他們使用一些資源,如加載一些對話框:例如授權對話框或分享框(如Facebook)。使用與窗口頂部相同的協議加載嵌入式iframe以防止出現相同的源策略
我們的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的外部窗口(我的站點)使用http或https的SDK中的代碼,使用相同的協議呈現embedded_provider.html,以及從而允許它們之間的JS通信?
我能想到的唯一解決方案是以某種方式通知嵌入式應用程序,我們當前正在瀏覽http/https,然後它可以正確實例化它(使用標誌use_https左右),但我更喜歡不要強制應用程序知道我們正在使用的協議。
你知道其他的選擇嗎?
謝謝!
使用//而不是http://或https:// – mplungjan 2013-03-01 18:47:03