2012-03-14 25 views
2

我在http(s)://www.api.domain.com(在HTTPS上安裝了RapidSSL)上有自己的API。HTTPS上的jQuery AJAX - 資源未能加載

如果我通過瀏覽器acccess這個URL,我得到

{"error":{"code":404,"message":"Invalid API version."}} 

這是罰款。

如果我訪問https://www.api.domain.com/v1/auth我得到

{"error":{"code":404,"message":"Missing authorization header."}}

這也是OK(簽署API工程確定對SSL)。

我對其他域的jQuery AJAX調用該API。如果我沒有使用SSL撥打電話(http://www.api.domain.com/v1/auth),一切正常(我發送授權標題和所有其他必要的東西),我得到的答覆。如果我試圖訪問相同的東西,但使用SSL(https://www.api.domain.com/v1/auth),我得到OPTIONS https://www.api.domain.com/v1/auth Resource failed to load

另外,CORS正在工作。在PHP端我有

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 
    header('Access-Control-Allow-Origin: *'); 
    header('Access-Control-Allow-Headers: Authorization, x-domain-accesskey, X-Requested-With'); 
    exit; 
} 

所以它的工作,但只有沒有SSL。在鉻我看到一個選項請求,然後GET/POST /不管我要求。它工作得很好。

但是,當我嘗試在HTTPS移動,

資源加載失敗

在網絡選項卡,我只有這個(不知道爲什麼第一個圖像上顯示選項,但在細節上POST

enter image description here

enter image description here

enter image description here

,然後就...停止?在jQuery的停止線

xhr.send((s.hasContent && s.data) || null); 

$.ajax是正常的(沒有crossDomain: truedataType: jsonp或別的東西)。

想法?

回答

2

使您在https中發送https渲染的https ajax請求的頁面可以正常工作。

+0

我也遇到同樣的問題。但無法理解你上面所說的。你能否詳細解釋一下。 – shashaDenovo 2014-02-04 05:21:37

+0

@shashaDenovo如果您通過https加載頁面,您還必須通過https調用腳本,您還應該通過https調用腳本,而不是http。有幾種不同的方法來實現這一點,例如谷歌分析腳本提前檢測協議。 Youtube嵌入式視頻做的像':// script_name'一樣 – Rooster 2014-02-04 16:02:19