Попробуйте этот код, чтобы увидеть и сообщить о возможном net::ERR_INSECURE_RESPONSE
Я тоже столкнулся с этой проблемой, используя самозаверяющий сертификат, который я решил не сохранять в настройках Chrome. После доступа к домену https и принятия сертификата вызов ajax работает нормально. Но как только истекает время принятия или до того, как оно было принято, jQuery.ajax()
вызов молча прерывается: timeout
параметр не выглядит как помощь, и error()
функция никогда не вызывается .
Таким образом, мой код никогда не получает success()
или error()
вызов и поэтому зависает. Я считаю, что это ошибка в обработке этой ошибки в jquery. Мое решение состоит в том, чтобы error()
вызвать вызов после указанного тайм-аута.
Этот код предполагает вызов jquery ajax формы jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})
.
Примечание. Скорее всего, вы захотите изменить функцию внутри, setTimeout
чтобы лучше интегрировать ее с пользовательским интерфейсом: вместо вызова alert()
.
const MS_FOR_HTTPS_FAILURE = 5000;
$.orig_ajax = $.ajax;
$.ajax = function(params)
{
var complete = false;
var success = params.success;
var error = params.error;
params.success = function() {
if(!complete) {
complete = true;
if(success) success.apply(this,arguments);
}
}
params.error = function() {
if(!complete) {
complete = true;
if(error) error.apply(this,arguments);
}
}
setTimeout(function() {
if(!complete) {
complete = true;
alert("Please ensure your self-signed HTTPS certificate has been accepted. "
+ params.url);
if(params.error)
params.error( {},
"Connection failure",
"Timed out while waiting to connect to remote resource. " +
"Possibly could not authenticate HTTPS certificate." );
}
}, MS_FOR_HTTPS_FAILURE);
$.orig_ajax(params);
}