2013-10-17 94 views
0

我們有一個統一的門戶,它通過基於jQuery選項卡的界面鏈接多個服務,利用iframe顯示來自不同服務的內容。我們的門戶使用HTTPS/SSL在安全的服務器上運行。雖然我們的大多數外部服務都是HTTPS,但其中兩個服務不是。顯然,我們意識到混合內容的問題,並且我們不喜歡在門戶網站中使用非https網站的想法,但我們沒有選擇。一切正常,直到幾天前谷歌將Chrome更新至版本30,現在它默默地阻止了混合內容。這給我們帶來了很多問題。我們聯繫了外部服務機構,詢問他們是否可以將服務升級到HTTPS,其中一位已經回來說他們在未來兩年內沒有這樣做。將HTTP內容嵌入HTTPS站點

顯然這是一個問題。我們嘗試通過將此服務打開到新的瀏覽器窗口來解決問題,但如果可能的話,這是一個相當不雅的解決方法,我想擺脫它。有什麼方法可以使用AJAX或PHP預取相關頁面,然後將其顯示在門戶網站iframe中,而Chrome不會阻止它?

我會非常感謝任何建議。我確實明白將安全內容與非安全內容混合在一起的想法是多麼糟糕,但我沒有選擇這個問題,因爲我的經理堅持說服務必須成爲門戶網站的一部分。

在此先感謝。

問候

亞歷

+0

這個問題只發生在http上的JS,我想。如果可以將你嵌入的內容剝離爲html/css/images,Chrome仍然可以顯示它們。 – Codemonkey

+0

[使用PHP使用curl獲取內容非常簡單](http://stackoverflow.com/questions/2440252/php-curl-i-need-a-simple-post-request-and-retrival-of-page-例)。 – Blazemonger

+0

@Blazemonger使用Apache的mod_proxy更簡單,可以像.htaccess文件中的單行一樣簡單。 :)它的開銷也比在PHP中做同樣的事情要少得多。 – deceze

回答

1

一種略爲簡單的解決方案將是使用反向代理。您可以很容易地配置Apache以採用HTTPS連接,從另一個URL獲取請求的內容並將其返回。見mod_proxy。問題在於瀏覽器必然會在其部分(您的反向代理)上看到不同的URL /域,這可能會或可能不會導致Cookie或硬編碼鏈接出現問題。

+0

你能提供一個如何在nginx中設置的例子嗎?我有一個類似的問題,並會非常感興趣的嘗試這個解決方案,但從來沒有代表過我的生活中的一件事。 – Codemonkey

+0

不,我不太瞭解nginx,我所能做的只是爲你閱讀手冊。你可以自己做。 ;) – deceze

+0

@deceze反向代理在某種程度上起作用 - 但它看起來似乎弄亂了很多樣式。 – Alex