리소스를로드하지 못했습니다 : net :: ERR_INSECURE_RESPONSE


206

이 오류가 발생하지 않도록 서버를 속일 수있는 방법이 있습니까?

유효한 보안 인증서로 서명되지 않았기 때문에 컨텐츠가 차단되었습니다.

html 웹 사이트의 iframe을 다른 웹 사이트로 가져오고 있지만이 질문의 제목과 인터넷 탐색기에서 콘솔 (크롬) 오류가 계속 발생합니다.

유효한 보안 인증서로 서명되지 않았기 때문에 컨텐츠가 차단되었습니다.


보안 리소스에서 안전하지 않은 리소스에 액세스하려는 것 같습니다. 나는 그들이 비슷한 문제가 여기에 있다고 생각 합니다 .
Derek

답변:


301

리소스는 아마도 HTTPS 프로토콜을 통한 자체 서명 SSL 인증서를 사용합니다. Chromium이므로 Chrome은 기본적으로 이러한 종류의 리소스를 안전하지 않은 것으로 간주합니다.

이 방법으로 우회 할 수 있습니다 :

  • 프레임의 URL이이라고 가정하면 https://www.domain.com크롬에서 새 탭을 열고로 이동하십시오 https://www.domain.com.
  • Chrome에서 SSL 인증서 수락을 요청합니다. 받아들입니다.
  • 그런 다음 프레임과 함께 페이지를 다시로드하면 이제 작동합니다.

당신이 짐작할 수있는 문제는 웹 사이트의 각 방문자 가이 작업을 수행하여 프레임에 액세스해야한다는 것입니다.

크롬은 각 탐색 세션에 대한 URL을 차단하지만 크롬은이 도메인을 신뢰한다는 사실을 기억할 수 있습니다.

HTTPS가 아닌 HTTP로 프레임에 액세스 할 수 있으면이 프레임을 사용하는 것이 좋습니다. 따라서이 문제가 해결됩니다.


1
다른 탭을 열면 https://domain.comSSL 인증서 로 이동하여 동의 해야한다고 생각합니다 .
Hozefa

2
@ RémiBecheras, Chrome이 여러 탐색 세션에서 인증서를 신뢰하도록 기억할 수있는 방법이 있습니까?
Felix

3
이러한 규칙을 추가하려면 인증서를 받아야합니다. 그것이 당신의 것이라면 이미 가지고 있습니다. 그렇지 않으면, 주소 표시 줄에서 https 왼쪽 아이콘> 인증서 정보> 세부 사항> 내보내기를 클릭하십시오. 그런 다음이 파일을 사용하십시오
Rémi Becheras

1
이것은 자체 서명 된 인증서를지나 계속 승인했지만 Chrome 이이 오류를 던지는 동일한 도메인 (자체)에 사이트가 요청을 보내는 이상한 경우에도 효과적이었습니다.
Michael

1
클라이언트 측 코드를 통해 이러한 종류의 우회를 수행하는 방법이 있습니까? "클라이언트에 프로그래밍 할 수 있습니다.이 서버에 접근하려고하는 사람은 스케치처럼 보이지만 잘 믿습니다. 둘 다 썼습니다. 기술적으로 형제 / 자매 / 성 중립 형제 자매입니다."
discodane

33

때로는 Chrome이이 오류를 발생시키지 않아야합니다. Chrome에 새 버전이있을 때 문제가 발생하여 다시 시작해야했습니다. 동일한 페이지를 다시 시작한 후 오류없이 작동했습니다. 콘솔의 오류는 다음과 같습니다.

net::ERR_INSECURE_RESPONSE

7
확인, Chrome을 다시 시작하고 백그라운드 크롬 프로세스를 모두 종료하면 문제가 해결되었습니다.
Oran Dennison

5
작동하지 않습니다. 자체 서명 된 인증서입니다. 다시
시작해도

1
나도 확인했다!
nemke

@ Balazs, 브라우저를 다시 시작하는 유일한 방법입니까? 우리가 다시 시작할 여유가 없다고 가정하면 그것을 통해 할 수있는 방법이 chrome://net-internals있습니까?
Pacerier

1
백그라운드 프로세스없이 Chrome을 다시 시작해도 문제가 해결되었습니다. 감사!
EnocNRoll-AnandaGopal Pardue

8

여전히 최신 및 Edge 브라우저 용 Asus T100 Windows 10 테스트 장치에서 위에서 설명한 문제가 발생했습니다.

솔루션이 장치날짜 / 시간 설정에있었습니다 . 어떻게 든 날짜가 올바르게 설정되지 않았습니다 (과거의 날짜). 올바른 날짜를 설정하고 브라우저를 다시 시작하여 이것을 복원하면 문제가 해결되었습니다. 이 문제를 디버깅하는 데 어려움을 겪지 않기를 바랍니다.


Windows 8을 실행하는 asus zenbook에서 비슷한 오류가 발생했습니다. 불행히도 이것은 작동하지 않지만 날짜 / 시간을 재설정하는 방법에 대해 자세히 설명 할 수 있습니까? Windows UI를 통해 시간대를 설정하면됩니까?
DEls

@ DEls, Windows 구성에서 시간대를 전환하여 시스템 시계를 재설정했습니다. 나중에 브라우저를 다시 시작 했습니까? 타이밍으로 문제가 해결되지 않으면이 주제에 설명 된 다른 솔루션을 조사해야합니다.
Sebastiaan Ordelman

왜 그런지 모르겠지만 이것은 나를 위해 일했습니다. 연도는 2048로 설정되어 현재 연도로 변경되었으며 모두 고정되었습니다. 감사합니다 @SebastiaanOrdelman
deanwilliammills

6

콘솔을 열고 내부 URL을 누르십시오. API 페이지로 이동 한 다음 페이지에서 SSL 인증서를 수락하고 앱 페이지로 돌아가서 다시로드하십시오. 이전에 Dev 환경에 대해 SSL 인증서가 발행되었음을 기억하십시오.


4

Windows 시스템으로 개발 중이거나 개발중인 경우 localhost 신뢰할 수있는 사이트로 추가 하기 만하면 됩니다 .

그리고 예, DarrylGriffiths의 의견에 따르면 Internet Explorer 설정을 추가하는 것처럼 보일 수 있습니다 ...

나는 이것이 IE 설정이 아니라 Windows라고 생각합니다. MS는 그들이 단지 IE라고 가정하는 경향이 있지만 (따라서 "보호 모드 사용"옆의 경고는 IE를 다시 시작해야 함을 경고합니다) ...


4
Windows가 아닌 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);
}

0

이 문제는 SSL 인증을 의미하는 https 때문입니다. Localhost를 사용해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.