2013-07-19 30 views
0

我想嵌入到https網站的iframe。被嵌入的站點只能使用http協議。跨域/協議iframe訪問這兩個服務器和現代功能

我得到一個控制檯錯誤,該幀被阻止,因爲「請求訪問的幀具有」https「協議,被訪問的幀具有協議」http「。協議必須匹配」。

一旦我有框架工作,然後我想在嵌入式網站上運行代碼。我認爲使用postMessage框架應該爲我做這件事,但我不希望在嵌入式頁面上接收這些消息的代碼總是被包含在內,所以想要在父站點上使用Javascript來注入JS文件。試圖使用contentDocument,但得到一個錯誤,這是null。

有沒有要求支持舊瀏覽器,所以所有新的HTML5的東西都很好,只要IE10/Chrome/Safari/Firefox的最新將運行它。我有兩個服務器的完全訪問權限,所以編輯PHP/Apache頭是好的。

回答

0

爲了回答我自己的問題,經過幾個小時的努力之後,事實證明,當父母是https並且孩子是http時,注入JS文件是不可能的。

但是,一旦我放棄了這個夢想,這很容易!

在加載iframe之前,我從網站A向想要在iframe(網站B)中顯示的網站發出一個CORS AJAX請求,以檢查HTTP_ORIGIN值以確保正確的服務器正在訪問。如果是,它會在網站B上設置會話變量。然後,當我從網站A的iframe中加載網站B時,它會使用會話值來知道可以包含我要注入到網站B的JavaScript文件。

之後,postMessage的東西都可以在不同的協議下正常工作,不需要額外的工作!

+0

哦。如果有人遇到這種情況,他們可能會發現記住必須在您的PHP腳本中將xhrFields.withCredentials設置爲true,並在您的PHP腳本中將jQuery AJAX請求和Access-Control-Allow-Credentials標頭設置爲true。 –