Prova questo codice per cercare e segnalare un possibile net::ERR_INSECURE_RESPONSE
Stavo riscontrando anche questo problema, utilizzando un certificato autofirmato, che ho scelto di non salvare nelle Impostazioni di Chrome. Dopo aver effettuato l'accesso al dominio https e aver accettato il certificato, la chiamata ajax funziona correttamente. Ma una volta che l'accettazione è scaduta o prima che sia stata accettata per la prima volta, la jQuery.ajax()
chiamata fallisce silenziosamente: il timeout
parametro non sembra essere d'aiuto e la error()
funzione non viene mai chiamata.
Come tale, il mio codice non riceve mai un success()
o error()
chiamata e quindi si blocca. Credo che questo sia un bug nella gestione di questo errore da parte di jquery. La mia soluzione è forzare la error()
chiamata dopo un timeout specificato.
Questo codice presuppone una chiamata ajax jquery del modulo jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})
.
Nota: probabilmente vorrai cambiare la funzione all'interno setTimeout
per integrarla al meglio con la tua UI: piuttosto che chiamare 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);
}