Я пытаюсь сделать междоменный XHR для безопасного домена.

Для этого я использовал следующий код:

this.post = function (url, data) {
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("POST",url,true);
    xmlhttp.withCredentials=true;
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.send(data);
}

Я использую эту функцию со строковыми данными в кодировке url и https://mydomainx.com/request в качестве url.

Я тестировал его в Chrome и Firefox с помощью Chrome Dev Tools / Firebug (просматривая заголовки запросов / ответов). Код работает в Chrome (т.е. запрос отправлен, получен соответствующий ответ). Однако небезопасный запрос работает в Firefox (когда я использую http://mydomainx.com/request, а не https).

В частности, в Firefox запрос https кажется отправленным: запрос POST появляется в Firebug с правильными заголовками, но ответа не получено. Я проверил на сервере конечной точки (mydomainx.com), он не получает запрос (говорит /var/log/apache2/access.log и error.log). Я также отображал status / responseText, когда xhr.readystate == 4 ----> status = 0, без текста ответа.

Я попытался сделать XHR без данных или с GET вместо POST, и без заголовка содержимого, и с заголовком text / plain content => точно такие же результаты (работает на chrome в http / https, работает на firefox с http, делает не работает в firefox с https).

Я потратил много времени, пытаясь найти объяснение в Google, но безуспешно ... Любая помощь будет принята с благодарностью. Большое спасибо

1
rbido 11 Янв 2014 в 20:46

1 ответ

Лучший ответ

Вы пробовали получить доступ к защищенной версии URL-адреса на вкладке Firefox? Похоже, Firefox зависает на сертификате SSL и может потребовать, чтобы вы добавили исключение для принятия сертификата, прежде чем запросы XHR к этому URL-адресу будут работать.

0
Erin Ishimoticha 31 Янв 2014 в 22:48
Спасибо! Помогло мне обнаружить, что проблема заключается в подтверждении цепочки ключей сертификата и отредактировать конфигурацию apache2, как описано в startssl.com /? app = 21. Странно, что у Chrome не было проблем с этим, хотя
 – 
rbido
3 Фев 2014 в 14:50