2015-09-14 76 views
0

我已經創建了一個腳本,我希望用戶插入到他們的Url欄中。腳本如下。Javascript HTTPS獲取限制

javascript:x=new XMLHttpRequest();x.open("GET", "http://example.com/page.php?param1=value1&param2=value2", true); x.send() 

唯一的問題是,我打算用戶把它放到他們的Url欄是一個HTTPS網站。由於某種原因,它不能正常工作。這是我在Chrome的控制檯正在錯誤:

Mixed Content: The page at 'example.net'; was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'example.com/page.php?param1=value1&param2=value2';. This request has been blocked; the content must be served over HTTPS. 

Example.net是第三方網站& example.com是我的地盤。

無論如何,有沒有辦法擺脫這個錯誤?我一直在尋找,但沒有成功。謝謝。

+0

通過HTTPS內容? –

+0

我將如何通過Javascript來做到這一點? – user2724175

+0

在你的URL中的'http'之後加一個's',並配置你的服務器。 –

回答

0

腳本失敗的原因是AJAX請求將在當前頁面的上下文中運行。即使您通過HTTPS提供內容,您可能遇到的下一個問題也是CORS錯誤。

使用以下可能是最安全的選擇,但它會重定向。

window.location = "http://example.com/page.php?param1=value1&param2=value2"; 

像這樣的東西也可以工作,但可能會被彈出窗口攔截器被阻塞:

var x = window.open("http://example.com/page.php?param1=value1&param2=value2"); 

然後,如果你想有一個位後關閉它,那麼你可以做類似

document.setTimeout(function(){ 
    x.close(); 

}, 4000); 

如果這些解決方案都不合適,我可以想到的唯一的其他選擇是瀏覽器插件,因爲它可以讓您在瀏覽器上下文中執行JS。

+0

如果我的頁面在發佈後重定向到原始頁面,它會很聰明嗎? – user2724175

+0

很可能 - 這實際上取決於你想要達到的目標。如果使用'window.location',可能值得使用'history.back()'而不是另一個'window.location'或HTTP重定向來返回頁面,因爲這樣可以最小化書籤干擾頁面的方式(部分形式填充,腳本等)。我肯定會首先測試window.open方法,因爲它可能是侵入性最小的 - 至少在Chrome中至少當它是書籤時,它不會觸發默認的彈出窗口阻止程序。 – Brian