ไม่สามารถโหลดทรัพยากร: net :: ERR_INSECURE_RESPONSE


206

มีวิธีการหลอกลวงเซิร์ฟเวอร์ดังนั้นฉันไม่ได้รับข้อผิดพลาดนี้:

เนื้อหาถูกบล็อกเนื่องจากไม่ได้ลงนามโดยใบรับรองความปลอดภัยที่ถูกต้อง

ฉันดึง iframe ของเว็บไซต์ html ไปยังอีกเว็บไซต์หนึ่ง แต่ฉันยังคงได้รับข้อผิดพลาดของคอนโซล (chrome) ในชื่อของคำถามนี้และใน internet explorer ก็กล่าวว่า:

เนื้อหาถูกบล็อกเนื่องจากไม่ได้ลงนามโดยใบรับรองความปลอดภัยที่ถูกต้อง


ดูเหมือนว่าคุณกำลังพยายามเข้าถึงทรัพยากรที่ไม่ปลอดภัยจากแหล่งข้อมูลที่ปลอดภัย ผมเชื่อว่าพวกเขามีปัญหาที่คล้ายกันที่นี่
Derek

คำตอบ:


301

ทรัพยากรของคุณอาจใช้ใบรับรอง SSL ที่ลงชื่อด้วยตนเองผ่านโปรโตคอล HTTPS Chromium ดังนั้น Google Chrome บล็อกโดยค่าเริ่มต้นทรัพยากรประเภทนี้ถือว่าไม่ปลอดภัย

คุณสามารถหลีกเลี่ยงวิธีนี้ได้:

  • สมมติว่า URL กรอบของคุณจะเปิดแท็บใหม่ในโครเมี่ยมและไปที่https://www.domain.comhttps://www.domain.com
  • Chrome จะขอให้คุณยอมรับใบรับรอง SSL ยอมรับมัน.
  • จากนั้นหากคุณโหลดหน้าเว็บใหม่ด้วยกรอบของคุณคุณจะเห็นว่าตอนนี้มันใช้งานได้แล้ว

ปัญหาที่คุณคาดเดาได้คือผู้เข้าชมเว็บไซต์ของคุณแต่ละคนต้องทำงานนี้เพื่อเข้าถึงเฟรมของคุณ

คุณสามารถสังเกตเห็นว่าโครเมี่ยมจะบล็อก URL ของคุณสำหรับแต่ละเซสชั่นการนำทางในขณะที่โครเมี่ยมสามารถจดจำได้ตลอดเวลาว่าคุณเชื่อถือโดเมนนี้

หากเฟรมของคุณสามารถเข้าถึงได้โดย HTTP แทนที่จะเป็น HTTPS ฉันแนะนำให้คุณใช้มันดังนั้นปัญหานี้จะได้รับการแก้ไข


1
ฉันคิดว่าเมื่อคุณเปิดแท็บอื่นคุณต้องไปที่https://domain.comและยอมรับใบรับรอง SSL
Hozefa

2
@ RémiBecherasมีวิธีใดบ้างที่จะให้ Chrome จดจำความน่าเชื่อถือของใบรับรองในช่วงการนำทางที่หลากหลาย
เฟลิกซ์มี. ค.

3
ในการเพิ่มกฎดังกล่าวคุณจะต้องได้รับใบรับรอง หากเป็นของคุณคุณมีอยู่แล้ว หากไม่เป็นเช่นนั้นให้คลิกไอคอน https left บน adressbar> ข้อมูลใบรับรอง> รายละเอียด> ส่งออก จากนั้นใช้ไฟล์นี้
Rémi Becheras

1
นอกจากนี้ยังใช้งานได้กับกรณีแปลก ๆ ที่ไซต์ส่งคำขอไปยังโดเมนเดียวกัน (ตัวเอง) ซึ่งฉันเพิ่งได้รับการอนุมัติให้ดำเนินการต่อผ่านใบรับรองที่ลงนามด้วยตนเอง แต่ Chrome ได้ส่งข้อผิดพลาดนี้ไปแล้ว
Michael

1
มีวิธีการทำบายพาสชนิดนี้ผ่านรหัสฝั่งลูกค้าหรือไม่ หมายความว่าฉันสามารถเขียนโปรแกรมลงในไคลเอนต์ "เฮ้เซิร์ฟเวอร์นี้ที่คุณกำลังพยายามเข้าถึงดูสเน่ห์ แต่ก็โอเคเชื่อฉันฉันเขียนคุณทั้งสองคุณเทคนิครหัสพี่ / น้องสาว / พี่น้องเป็นกลางเพศ"?
discodane

33

บางครั้ง Google Chrome โยนข้อผิดพลาดนี้แม้ว่ามันจะไม่ควร ฉันพบมันเมื่อ Chrome มีรุ่นใหม่และจำเป็นต้องเริ่มต้นใหม่ หลังจากรีสตาร์ทหน้าเดียวกันทำงานโดยไม่มีข้อผิดพลาดใด ๆ ข้อผิดพลาดในคอนโซลคือ:

net::ERR_INSECURE_RESPONSE

7
ยืนยันการเริ่มต้นใหม่ของ Chrome (และฆ่ากระบวนการพื้นหลังทั้งหมดของ Chrome) แก้ไขให้ฉัน
Oran Dennison

5
ไม่ทำงาน .. เป็นใบรับรองที่ลงนามเอง .. มันจะไม่ทำงานโดยการรีสตาร์ท
user1735921

1
ยืนยันกับฉันด้วย!
nemke

@ Balazs การรีสตาร์ทเบราว์เซอร์เป็นวิธีเดียวหรือไม่ สมมติว่าเราไม่สามารถรีสตาร์ทได้มีวิธีในการทำผ่านchrome://net-internalsหรือไม่
Pacerier

1
การรีสตาร์ท Chrome (โดยไม่มีกระบวนการพื้นหลัง) ได้แก้ไขให้ฉันด้วย ขอบคุณ!
EnocNRoll - AnandaGopal Pardue

8

ฉันยังคงประสบปัญหาที่อธิบายไว้ข้างต้นในอุปกรณ์ทดสอบ Asus T100 Windows 10 สำหรับทั้งเบราเซอร์ Edge และ Chrome

วิธีการแก้ปัญหาอยู่ในการตั้งค่าวันที่ / เวลาของอุปกรณ์ ; ยังไม่ได้กำหนดวันที่อย่างถูกต้อง (วันที่ผ่านมา) กู้คืนสิ่งนี้โดยการตั้งค่าวันที่ที่ถูกต้อง (และรีสตาร์ทเบราว์เซอร์) แก้ไขปัญหาให้ฉัน ฉันหวังว่าฉันช่วยให้ใครบางคนปวดหัวแก้จุดบกพร่องปัญหานี้


ฉันพบข้อผิดพลาดที่คล้ายกันใน asus zenbook ที่ใช้ Windows 8 โชคไม่ดีที่นี่ไม่ได้ผลสำหรับฉัน แต่คุณสามารถอธิบายรายละเอียดเพิ่มเติมว่าคุณรีเซ็ตวันที่ / เวลาได้อย่างไร เพียงแค่ตั้งค่าเขตเวลาผ่าน windows ui
DEls

@DEls ฉันเปลี่ยนเขตเวลาในการกำหนดค่า Windows - ซึ่งรีเซ็ตนาฬิการะบบสำหรับฉัน คุณรีสตาร์ทเบราว์เซอร์ในภายหลังหรือไม่? หากเวลาไม่สามารถแก้ไขปัญหาได้คุณอาจต้องดูวิธีแก้ไขปัญหาอื่นที่อธิบายไว้ในหัวข้อนี้
Sebastiaan Ordelman

ฉันไม่รู้ว่าทำไม แต่สิ่งนี้ใช้ได้สำหรับฉัน ปีถูกตั้งค่าเป็น 2048 เปลี่ยนเป็นปีปัจจุบันและคงที่ทั้งหมด ขอบคุณ @SebastiaanOrdelman
deanwilliammills

6

เปิดคอนโซลของคุณและกด URL ภายใน มันจะนำคุณไปยังหน้า API จากนั้นในหน้านั้นยอมรับใบรับรอง SSL กลับไปที่หน้าแอพและโหลดซ้ำ โปรดจำไว้ว่าควรมีการออกใบรับรอง SSL สำหรับสภาพแวดล้อม Dev ของคุณมาก่อน


4

หากคุณกำลังพัฒนาและคุณกำลังพัฒนาด้วยเครื่อง Windows เพียงเพิ่มlocalhost เป็นเว็บไซต์ที่เชื่อถือได้ได้

และใช่ตามความคิดเห็นของ DarrylGriffiths แม้ว่ามันอาจดูเหมือนว่าคุณกำลังเพิ่มการตั้งค่า Internet Explorer ...

ฉันเชื่อว่าเป็น Windows มากกว่าการตั้งค่า IE แม้ว่า MS มักจะคิดว่าพวกเขาเป็นเพียง IE (ดังนั้นการแจ้งเตือนถัดจาก "เปิดใช้งานโหมดที่ได้รับการป้องกัน" ที่ requries รีสตาร์ท IE) ...


4
ฉันใช้งาน Ubuntu บน Linux ไม่ได้แก้ปัญหาอะไร?
user1735921

4

เสนอวิธีแก้ปัญหาที่เป็นไปได้อีกประการหนึ่งสำหรับข้อผิดพลาดนี้

หากคุณมีแอพพลิเคชั่นส่วนหน้าที่ทำการเรียก API ไปยังส่วนหลังตรวจสอบให้แน่ใจว่าคุณอ้างอิงชื่อโดเมนที่ออกใบรับรองแล้ว

เช่น

https://example.com/api/etc

และไม่

https://123.4.5.6/api/etc

ในกรณีของฉันฉันกำลังเรียก API ไปยังเซิร์ฟเวอร์ที่ปลอดภัยที่มีใบรับรอง แต่ใช้ IP แทนชื่อโดเมน Failed to load resource: net::ERR_INSECURE_RESPONSEนี้โยน


0

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.