Essayez ce code pour rechercher et signaler un éventuel net::ERR_INSECURE_RESPONSE
J'avais également ce problème, en utilisant un certificat auto-signé, que j'ai choisi de ne pas enregistrer dans les paramètres de Chrome. Après avoir accédé au domaine https et accepté le certificat, l'appel ajax fonctionne correctement. Mais une fois que cette acceptation a expiré ou avant d'avoir été acceptée pour la première fois, l' jQuery.ajax()
appel échoue silencieusement: le timeout
paramètre ne semble pas aider et la error()
fonction n'est jamais appelée.
En tant que tel, mon code ne reçoit jamais d' appel success()
ou error()
et se bloque donc. Je crois que c'est un bug dans la gestion par jquery de cette erreur. Ma solution consiste à forcer l' error()
appel après un délai spécifié.
Ce code suppose un appel jquery ajax du formulaire jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})
.
Remarque: Vous souhaiterez probablement modifier la fonction dans le setTimeout
pour mieux s'intégrer à votre interface utilisateur: plutôt que d'appeler 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);
}