我在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)
,然後就...停止?在jQuery的停止線
xhr.send((s.hasContent && s.data) || null);
$.ajax
是正常的(沒有crossDomain: true
,dataType: jsonp
或別的東西)。
想法?
我也遇到同樣的問題。但無法理解你上面所說的。你能否詳細解釋一下。 – shashaDenovo 2014-02-04 05:21:37
@shashaDenovo如果您通過https加載頁面,您還必須通過https調用腳本,您還應該通過https調用腳本,而不是http。有幾種不同的方法來實現這一點,例如谷歌分析腳本提前檢測協議。 Youtube嵌入式視頻做的像':// script_name'一樣 – Rooster 2014-02-04 16:02:19