2016-08-22 171 views
0

我們使用HTML5開發電話應用程序,這意味着我們的電話本地協議是file://。我們正試圖將Opentable的小部件包含在我們的頁面中。但他們的小部件JS鏈接看起來像:從本地協議強制使用Javascript協議中的http協議

<script type='text/javascript> src='//secure.opentable.com/widget/reservation/loader?rid=27763&domain=com&type=standard&theme=standard&lang=en&overlay=false&iframe=true'></script> 

注意,它與

//secure.opentable.com 

開始因此,這將讓我們的文件:自動//協議。但即使我改變它

https://secure.opentable.com 

它仍然不能在本地工作。我注意到,在他們的JS源代碼中,他們仍然使用「//」,它仍然會得到我們的「file://」協議。

以下是錯誤我更改鏈接到https://secure.opentable.com/後...

無法加載資源:該請求的URL沒有這個 服務器上找到。

文件://www.opentable.com/widget/reservation/canvas擺脫= 27763 &域= com的&類型=標準&主題=標準& LANG = EN &覆蓋=假& insideiframe =真

我注意到,在控制檯,它看起來像:

enter image description here

我怎樣才能使之成爲當地的ENV工作ironment?

謝謝!

+0

當您嘗試「https:// secure.opentable.com」時會得到什麼錯誤?它應該像那樣工作。 – Barmar

+0

@Barmar我把錯誤放在我的問題中。看看黃色突出顯示的部分。謝謝您的幫助! – jackhao

+1

錯誤來自他們的腳本。它創建一個iframe,並且它們不會將協議放在iframe的源代碼中,因此它使用與您的頁面相同的協議。你需要聯繫他們,看看是否有辦法讓它做正確的事情。 – Barmar

回答

1

也許這將工作:

$(document).ready(function() { 
    $("iframe[src^='//www.opentable.com']").attr('src', function(i, oldsrc) { 
     return "https:" + oldsrc; 
    }); 
); 

它會等到文檔準備好,這應該是新的IFRAME被添加到DOM後,然後將它與一個與https:協議取代其src

+0

是的,我結束了同樣的事情!感謝壽。 – jackhao

+0

我只是很生氣,我沒有想到這一兩天前,當別人問了類似的問題。 – Barmar