2017-09-16 79 views
0

我有一個基於HTTPS的網站,我有一個JS代碼從基於HTTP的網站獲取數據。我收到一個HTTP服務器不可信的錯誤。 雖然相同的代碼適用於HTTP到HTTP。但不是HTTP到HTTPS。 這是錯誤:試圖從HTTP服務器從HTTPS網站檢索JSONP

Mixed Content: The page at ' https://www.33k.com/player/playerudan.php ' was loaded over HTTPS, but requested an insecure script ' http://33k.thepuremix.net/json.xsl '. This request has been blocked; the content must be served over HTTPS.

爲了得到這個數據我使用類似下面的代碼:

var URL = "http://33k.thepuremix.net/json.xsl" 
$.getJSON(URL, function(data) { 
console.log(data); 
}); 

不知道如何解決它或使其工作。 Icecast上有這樣一個Crossdomain.xml,我可以給它配置或其他任何東西來修復它?

UPDATE: 上述鏈接是兩個不同的網站。這不是一個子域問題。鏈接看起來很像。域A(HTTPS)想要從域B(HTTP)獲取JSON。

+2

這是由設計。安全連接無法向非安全連接發出請求(至少不是沒有用戶授權的情況下)。您需要使網站HTTP也可以,或者您所調用的域名應該更改爲HTTPS。更好的是,由於請求者和收件人頁面都在同一個域中,只需使用相對路徑 –

+1

@Rory他不能只在他的https上創建後端服務(例如在php中)並從http上調用另一個服務? –

+2

@LordMidi這完全是錯誤的。 JSONP是偶爾用於跨域請求的數據格式。它與安全/非安全內容之間的請求完全無關。 –

回答

1

從HTTPS調用HTTP被設計爲在註釋中提到的@RoryMcCrossan阻止(相同原點策略),您可以將腳本從HTTP移動到HTTPS或創建後端腳本(例如PHP),並從HTTP它喜歡:

JavaScript(HTTPS) -> PHP(HTTPS) -> PHP(HTTP) 
JavaScript(HTTPS) <- PHP(HTTPS) <- PHP(HTTP) 

參考PHP創建一個http請求:Http Request in PHP

這裏也有一些信息關於Same Origin Policy

+0

謝謝。你能檢查我最後的評論嗎?在主要職位? – DannyBoy

+0

NO。我認爲有錯誤。這是兩個不同的網站。一個網站是:'thepuremix.net'(HTTP),一個是'33k.com'(HTTPS)。 – DannyBoy

+1

糾正這是我們的錯誤,但仍然是不可能的,我已經編輯了我的答案,並提供了有關「同源策略」的信息,這就是無法做到您想做的事情的原因。 –