ลองใช้รหัสนี้เพื่อดูและรายงานความเป็นไปได้ 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
เพื่อบูรณาการที่ดีที่สุดกับ UI ของคุณ: 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);
}