Я проводил много исследований и не мог найти способ справиться с этим. Я пытаюсь выполнить jQuery ajax-вызов с https-сервера на сервер https locahost, работающий на причале, с пользовательским самозаверяющим сертификатом. Моя проблема заключается в том, что я не могу определить, является ли ответ отрицательным соединением или небезопасным ответом (из-за отсутствия подтверждения сертификата). Есть ли способ определить разницу между обоими сценариями? responseText
и statusCode
всегда одинаковы в обоих случаях, хотя в консоли хром я вижу разницу:
net::ERR_INSECURE_RESPONSE
net::ERR_CONNECTION_REFUSED
responseText
всегда ", а statusCode
всегда" 0" для обоих случаев.
Мой вопрос в том, как я могу определить, не вызвал ли вызов jQuery ajax из-за ERR_INSECURE_RESPONSE
или из-за ERR_CONNECTION_REFUSED
?
Как только сертификат принят, все работает нормально, но я хочу знать, выключен ли сервер localhost или его запуск, но сертификат еще не принят.
$.ajax({
type: 'GET',
url: "https://localhost/custom/server/",
dataType: "json",
async: true,
success: function (response) {
//do something
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr, textStatus, errorThrown); //always the same for refused and insecure responses.
}
});
Даже выполняя вручную запрос, я получаю тот же результат:
var request = new XMLHttpRequest();
request.open('GET', "https://localhost/custom/server/", true);
request.onload = function () {
console.log(request.responseText);
};
request.onerror = function () {
console.log(request.responseText);
};
request.send();