2012-08-31 105 views
5

我知道有一個幾乎重複的問題,但答案並不令人滿意。是否有可能從HTTPS到HTTP發出JSONP請求?

我需要使用通過HTTP運行的Openstreetmap服務進行地理編碼。

我的網站通過HTTPS運行。

從https到http執行JSONP請求似乎是不可能的,瀏覽器(Chrome)抱怨不安全的內容。

任何解決方案?

回答

5

瀏覽器抱怨不安全內容的原因是內容不安全。具有安全頁面的全部目的是它全部是安全的,並且可以被信任。

您可以在安全站點中設置請求不安全內容的代理頁面。在發送給瀏覽器之前,您應該驗證內容,以確保它的安全性,而不是假裝安全。

+0

所以,在真實的情景,我的JQuery應打開HTTP彈出窗口(只有我能想到的解決方案),獲取JSONP響應並解析它? – Cranio

+1

在真實場景中,您不應通過安全頁面上的未加密通道加載內容。如果你對安全性不是很認真,那麼首先使用HTTP。 – Tgr

+1

@Cranio:不,我正在討論的代理是服務器上的一個頁面。您向其發出https請求,並向服務發出http請求,驗證響應並將其返回給瀏覽器。 – Guffa

3

如果您希望對HTTP運行的外部服務發出POST請求,而初始請求來自HTTPS,則始終將其視爲不安全。 據我所知,沒有辦法繞過它。

你可以做什麼,是POST到你的後端,發送另一個POST請求到HTTP下運行的服務。從那裏只返回HTTP服務返回的值。

+0

你應該**不**只是從服務中返回值,你應該首先驗證它。代理正在採取不安全的數據並返回安全數據,因此它必須負責檢查它是否確實安全。 – Guffa

+0

最後你可能想要返回數據,如果它是安全的。否則,首先執行請求是沒有用的。 –

+0

我說你應該先驗證一下。接下來你會怎麼想? ;) – Guffa

3

對於誰可能關心,這是我如何自己整理出來的。

1)我的JavaScript代碼,我與我需要轉發到服務

2)AJAX頁面使得通過捲曲請求使用該地址

3參數服務器上調用一個AJAX頁面)我消毒響應,並與JavaScript的回調上成功把它變成JSON

4)我用數據

+0

是的,看起來不錯。代理頁面不必不變地返回響應。 – Guffa

+0

@Guffa:是的,這是一對座標,非常容易通過PHP進行消毒。感謝您的幫助:) – Cranio

相關問題