Versuchen Sie diesen Code, um nach einem möglichen zu suchen und ihn zu melden net::ERR_INSECURE_RESPONSE
Ich hatte auch dieses Problem mit einem selbstsignierten Zertifikat, das ich nicht in den Chrome-Einstellungen gespeichert habe. Nach dem Zugriff auf die https-Domäne und dem Akzeptieren des Zertifikats funktioniert der Ajax-Aufruf einwandfrei. Sobald diese Annahme abgelaufen ist oder bevor sie zum ersten Mal angenommen wurde, jQuery.ajax()
schlägt der Aufruf stillschweigend fehl: Der timeout
Parameter scheint keine Hilfe zu sein und die error()
Funktion wird nie aufgerufen.
Daher erhält mein Code niemals einen success()
oder einen error()
Anruf und hängt daher. Ich glaube, dies ist ein Fehler in der Behandlung dieses Fehlers durch jquery. Meine Lösung besteht darin, den error()
Anruf nach einer bestimmten Zeitüberschreitung zu erzwingen .
Dieser Code setzt einen jquery ajax-Aufruf des Formulars voraus jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})
.
Hinweis: Sie möchten wahrscheinlich die Funktion innerhalb von ändern, setTimeout
um sie am besten in Ihre Benutzeroberfläche zu integrieren: anstatt sie aufzurufen 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);
}