Không thể tải tài nguyên: net :: ERR_INSECURE_RESPONSE


206

Có cách nào để lừa máy chủ để tôi không gặp phải lỗi này:

Nội dung đã bị chặn vì không được ký bởi chứng chỉ bảo mật hợp lệ.

Tôi đang kéo iframe của một trang web html vào một trang web khác nhưng tôi liên tục gặp lỗi bảng điều khiển (chrome) trong tiêu đề của câu hỏi này và trong trình duyệt internet explorer, nó nói:

Nội dung đã bị chặn vì không được ký bởi chứng chỉ bảo mật hợp lệ.


có vẻ như bạn đang cố truy cập tài nguyên không an toàn từ tài nguyên an toàn. Tôi tin rằng họ có một vấn đề tương tự ở đây .
Derek

Câu trả lời:


301

Tài nguyên của bạn có thể sử dụng chứng chỉ SSL tự ký qua giao thức HTTPS. Chromium, do đó, Google Chrome chặn theo mặc định loại tài nguyên này được coi là không an toàn.

Bạn có thể bỏ qua cách này:

  • Giả sử URL của khung của bạn là https://www.domain.com, mở một tab mới bằng chrome và đi đến https://www.domain.com.
  • Chrome sẽ yêu cầu bạn chấp nhận chứng chỉ SSL. Chấp nhận nó.
  • Sau đó, nếu bạn tải lại trang của mình với khung của mình, bạn có thể thấy rằng bây giờ nó hoạt động

Vấn đề như bạn có thể đoán, là mỗi khách truy cập trang web của bạn phải thực hiện nhiệm vụ này để truy cập vào khung của bạn.

Bạn có thể nhận thấy rằng chrome sẽ chặn URL của bạn cho mỗi phiên điều hướng, trong khi chrome có thể ghi nhớ mãi mãi mà bạn tin tưởng tên miền này.

Nếu khung của bạn có thể được truy cập bằng HTTP chứ không phải HTTPS, tôi khuyên bạn nên sử dụng nó, vì vậy vấn đề này sẽ được giải quyết.


1
Tôi nghĩ rằng khi bạn mở tab khác, bạn cần phải đi đến https://domain.comvà chấp nhận cert SSL.
Hozefa

2
@ RémiBecheras, có cách nào để Chrome nhớ để tin tưởng chứng chỉ qua nhiều phiên điều hướng không?
Felix

3
Để thêm một quy tắc như vậy, bạn phải có được chứng chỉ. Nếu nó là của bạn, bạn đã có nó. Nếu không, hãy nhấp vào biểu tượng https bên trái trên thanh địa chỉ> thông tin chứng chỉ> chi tiết> xuất. Sau đó, sử dụng tệp này
Rémi Becheras

1
Điều này cũng có tác dụng đối với trường hợp kỳ lạ khi một trang web đang gửi yêu cầu đến cùng một tên miền mà tôi vừa phê duyệt tiếp tục qua chứng chỉ tự ký nhưng sau đó Chrome đã ném lỗi này.
Michael

1
Có cách nào để thực hiện loại bỏ qua này thông qua mã phía khách hàng không? Có nghĩa là, tôi có thể lập trình cho khách hàng "này, máy chủ này bạn đang cố truy cập trông có vẻ sơ sài, nhưng tôi tin tưởng tôi. Tôi đã viết cho bạn cả hai, bạn là anh chị em kỹ thuật / anh chị em trung lập về mặt kỹ thuật"?
mất trí

33

Đôi khi Google Chrome ném lỗi này, ngay cả khi không nên. Tôi đã trải nghiệm nó khi Chrome có phiên bản mới và cần phải khởi động lại. Sau khi khởi động lại cùng một trang làm việc mà không có bất kỳ lỗi nào. Lỗi trong giao diện điều khiển là:

net::ERR_INSECURE_RESPONSE

7
Xác nhận, việc khởi động lại Chrome (và giết tất cả các quy trình Chrome nền) đã sửa nó cho tôi.
Oran Dennison

5
không hoạt động .. đó là chứng chỉ tự ký .. nó sẽ không hoạt động bằng cách khởi động lại
user1735921

1
Khẳng định cũng với tôi!
nemke

@Balazs, Có phải khởi động lại trình duyệt là cách duy nhất? Giả sử chúng ta không đủ khả năng để khởi động lại, có cách nào để thực hiện thông qua chrome://net-internalskhông?
Pacerier

1
Việc khởi động lại Chrome (không có quy trình nền) cũng đã sửa nó cho tôi. Cảm ơn!
EnocNRoll - AnandaGopal Pardue

8

Tôi vẫn gặp phải sự cố được mô tả ở trên trên thiết bị thử nghiệm Windows 10 của Asus T100 cho cả trình duyệt Edge và Chrome.

Giải pháp là trong cài đặt ngày / giờ của thiết bị ; bằng cách nào đó ngày không được đặt chính xác (ngày trong quá khứ). Khôi phục điều này bằng cách đặt ngày chính xác (và khởi động lại trình duyệt) đã giải quyết vấn đề cho tôi. Tôi hy vọng tôi cứu ai đó đau đầu gỡ lỗi vấn đề này.


Tôi đang gặp một lỗi tương tự trên asus zenbook chạy Windows 8. Thật không may, điều này không hiệu quả với tôi nhưng bạn có thể giải thích chi tiết hơn về cách bạn đặt lại ngày / giờ không? Chỉ bằng cách thiết lập múi giờ thông qua các cửa sổ ui?
DEls

@DEls, tôi đã chuyển múi giờ trong cấu hình Windows - thiết lập lại đồng hồ hệ thống cho tôi. Bạn đã khởi động lại trình duyệt sau đó? Nếu thời gian không giải quyết được vấn đề, bạn có thể phải xem xét giải pháp khác được mô tả trong chủ đề này.
Sebastiaan Ordelman

Tôi không biết tại sao, nhưng điều này làm việc cho tôi. Năm được đặt thành 2048, đổi thành năm hiện tại và tất cả đã được sửa. Cảm ơn @SebastiaanOrdelman
deanwilliammills

6

mở giao diện điều khiển của bạn và nhấn URL bên trong. nó sẽ đưa bạn đến trang API và sau đó trong trang chấp nhận chứng chỉ SSL, quay lại trang ứng dụng của bạn và tải lại. hãy nhớ rằng chứng chỉ SSL phải được cấp cho môi trường Dev của bạn trước đó.


4

Nếu bạn đang phát triển và bạn đang phát triển với máy Windows, chỉ cần thêm localhost dưới dạng Trang web đáng tin cậy .

Và vâng, theo nhận xét của DarrylGriffiths, mặc dù có thể bạn đang thêm cài đặt Internet Explorer ...

Tôi tin rằng đó là Windows chứ không phải cài đặt IE. Mặc dù MS có xu hướng cho rằng họ chỉ là IE (do đó cảnh báo bên cạnh "Bật chế độ được bảo vệ" mà nó yêu cầu khởi động lại IE) ...


4
Tôi đang sử dụng linux ubfox, không phải windows, giải pháp nào?
dùng1735921

4

Cung cấp một giải pháp tiềm năng khác cho lỗi này.

Nếu bạn có một ứng dụng lối vào thực hiện các cuộc gọi API đến phụ trợ, hãy đảm bảo bạn tham chiếu tên miền mà chứng chỉ đã được cấp.

ví dụ

https://example.com/api/etc

và không

https://123.4.5.6/api/etc

Trong trường hợp của tôi, tôi đã thực hiện các cuộc gọi API đến một máy chủ an toàn có chứng chỉ, nhưng sử dụng IP thay vì tên miền. Điều này đã ném a Failed to load resource: net::ERR_INSECURE_RESPONSE.


0

Hãy thử mã này để xem và báo cáo, có thể net::ERR_INSECURE_RESPONSE

Tôi cũng gặp vấn đề này khi sử dụng chứng chỉ tự ký mà tôi đã chọn không lưu vào Cài đặt Chrome. Sau khi truy cập tên miền https và chấp nhận chứng chỉ, cuộc gọi ajax hoạt động tốt. Nhưng một khi sự chấp nhận đó đã hết thời gian hoặc trước khi nó được chấp nhận lần đầu tiên, jQuery.ajax()cuộc gọi sẽ thất bại một cách im lặng: timeouttham số dường như không có ích và error()chức năng không bao giờ được gọi.

Như vậy, mã của tôi không bao giờ nhận được một cuộc gọi success()hoặc error()do đó bị treo. Tôi tin rằng đây là một lỗi trong việc xử lý lỗi này của jquery. Giải pháp của tôi là buộc error()cuộc gọi sau khi hết thời gian chỉ định.

Mã này không giả sử một cuộc gọi ajax jquery của mẫu jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional}).

Lưu ý: Bạn có thể muốn thay đổi chức năng trong setTimeoutđể tích hợp tốt nhất với giao diện người dùng của mình: thay vì gọi điện 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);
}

0

Vấn đề này là do https của bạn có nghĩa là chứng nhận SSL. Hãy thử trên Localhost.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.