У меня есть собственный API на http(s)://www.api.domain.com
(на HTTPS установлен RapidSSL).
Если я получу доступ к этому URL через браузер, я получу
{"error":{"code":404,"message":"Invalid API version."}}
что хорошо.
Если я получу доступ https://www.api.domain.com/v1/auth
, я получу
{"error":{"code":404,"message":"Missing authorization header."}}
что тоже нормально (признак того, что 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. В chrome я вижу один запрос OPTIONS , а затем GET / POST / любой другой запрос , который я запросил. Работает просто отлично.
Но когда я пытаюсь перейти по HTTPS,
Не удалось загрузить ресурс
На вкладке Сеть у меня есть только это (не уверен, почему на первом изображении отображается ОПЦИИ , но на деталях POST )
а потом просто ... останавливается? В jQuery он останавливается на линии
xhr.send( ( s.hasContent && s.data ) || null );
$.ajax
нормально (не иметь crossDomain: true
, dataType: jsonp
или что-то еще).
Идеи