Wypróbuj ten kod, aby uważać i zgłaszać możliwe net::ERR_INSECURE_RESPONSE
Miałem również ten problem, używając samopodpisanego certyfikatu, którego postanowiłem nie zapisywać w Ustawieniach Chrome. Po uzyskaniu dostępu do domeny https i zaakceptowaniu certyfikatu wywołanie ajax działa poprawnie. Ale gdy upłynie limit czasu akceptacji lub zanim zostanie ona zaakceptowana, jQuery.ajax()wywołanie nie powiedzie się po cichu: timeoutparametr nie wydaje się pomocny, a error()funkcja nigdy nie zostaje wywołana.
Jako taki, mój kod nigdy nie odbiera success()ani error()połączenia, i dlatego się zawiesza. Uważam, że jest to błąd w obsłudze tego błędu przez jquery. Moim rozwiązaniem jest wymuszenie error()połączenia po upływie określonego czasu.
Ten kod zakłada wywołanie jquery ajax formularza jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional}).
Uwaga: Prawdopodobnie będziesz chciał zmienić funkcję w setTimeoutcelu najlepszej integracji z interfejsem użytkownika: zamiast wywoływania 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);
}