Nie udało się załadować zasobu: net :: ERR_INSECURE_RESPONSE

206

Czy istnieje sposób na oszukanie serwera, więc nie dostaję tego błędu:

Treść została zablokowana, ponieważ nie została podpisana ważnym certyfikatem bezpieczeństwa.

Wciągam iframe strony HTML do innej strony, ale wciąż pojawia się błąd konsoli (chrome) w tytule tego pytania, a w Internet Explorerze jest napisane:

Treść została zablokowana, ponieważ nie została podpisana ważnym certyfikatem bezpieczeństwa.

użytkownik3594437
źródło
wygląda na to, że próbujesz uzyskać dostęp do niezabezpieczonego zasobu z bezpiecznych zasobów. Uważam, że mają podobny problem tutaj .
Derek

Odpowiedzi:

301

Twój zasób prawdopodobnie używa samopodpisanego certyfikatu SSL za pośrednictwem protokołu HTTPS. Chrom, więc Google Chrome domyślnie blokuje ten rodzaj zasobu uważany za niezabezpieczony.

Możesz ominąć w ten sposób:

  • Zakładając, że adres URL ramki to https://www.domain.com, otwórz nową kartę w chrome i przejdź do https://www.domain.com.
  • Chrome poprosi o zaakceptowanie certyfikatu SSL. Zaakceptuj to.
  • Następnie, jeśli przeładujesz stronę ramką, zobaczysz, że teraz działa

Problem, jak można się domyślić, polega na tym, że każdy odwiedzający witrynę musi wykonać to zadanie, aby uzyskać dostęp do ramki.

Możesz zauważyć, że chrome będzie blokował twój adres URL dla każdej sesji nawigacji, a chrome może zapamiętać na zawsze, że ufasz tej domenie.

Jeśli dostęp do twojej ramki jest możliwy poprzez HTTP zamiast HTTPS, sugeruję, abyś z niej skorzystał, aby ten problem został rozwiązany.

Rémi Becheras
źródło
1
Myślę, że kiedy otworzysz drugą kartę, musisz przejść do https://domain.comi zaakceptować certyfikat SSL.
Hozefa
2
@ RémiBecheras, czy istnieje sposób, by Chrome pamiętał o zaufaniu do certyfikatu podczas wielu sesji nawigacyjnych?
Felix
3
Aby dodać taką regułę, musisz uzyskać certyfikat. Jeśli jest twój, już go masz. Jeśli nie, kliknij lewą ikonę https na pasku adresu> informacje o certyfikacie> szczegóły> eksport. Następnie użyj tego pliku
Rémi Becheras
1
To zadziałało również w dziwnym przypadku, gdy witryna wysyłała żądanie do tej samej domeny (samej), które właśnie zatwierdziłem, kontynuując przechodzenie poza samopodpisany certyfikat, ale potem Chrome zgłaszał ten błąd.
Michael
1
Czy istnieje sposób na obejście tego kodu po stronie klienta? Czy mogę zaprogramować w kliencie „hej ten serwer, do którego próbujesz uzyskać dostęp, wygląda na szkicowy, ale jest w porządku, zaufaj mi. Napisałem do was oboje, jesteście technicznie kodowani bracia / siostry / rodzeństwo neutralne pod względem płci”?
discodane
33

Czasami Google Chrome zgłasza ten błąd, nawet jeśli nie powinien. Doświadczyłem tego, gdy Chrome miał nową wersję i musiał zostać zrestartowany. Po ponownym uruchomieniu ta sama strona działała bez żadnych błędów. Błąd w konsoli to:

net::ERR_INSECURE_RESPONSE
Balazs Nemeth
źródło
7
Potwierdzono, że ponowne uruchomienie Chrome (i zabicie wszystkich procesów Chrome w tle) naprawiło to dla mnie.
Oran Dennison
5
nie działa .. jest to samopodpisany certyfikat .. nie będzie działać po ponownym uruchomieniu
użytkownik1735921
1
Potwierdzono także u mnie!
nemke
@Balazs, Czy ponowne uruchomienie przeglądarki jest jedynym sposobem? Zakładając, że nie możemy sobie pozwolić na ponowne uruchomienie, czy jest na to sposób chrome://net-internals?
Pacerier
1
Ponowne uruchomienie Chrome (bez procesów w tle) naprawiło to również dla mnie. Dzięki!
EnocNRoll - AnandaGopal Pardue
8

Nadal występowałem problem opisany powyżej na urządzeniu testowym Asus T100 Windows 10 zarówno dla (aktualnej) przeglądarki Edge, jak i Chrome.

Rozwiązanie dotyczyło ustawień daty / godziny urządzenia ; w jakiś sposób data nie została ustawiona poprawnie (data w przeszłości). Przywrócenie tego przez ustawienie prawidłowej daty (i ponowne uruchomienie przeglądarek) rozwiązało problem. Mam nadzieję, że oszczędzę komuś bólu głowy podczas debugowania tego problemu.

Sebastiaan Ordelman
źródło
Występuje podobny błąd w asusie zenbook z systemem Windows 8. Niestety, nie zadziałało to dla mnie, ale czy możesz bardziej szczegółowo wyjaśnić, jak zresetować datę / godzinę? Wystarczy ustawić strefę czasową w interfejsie użytkownika systemu Windows?
DEls
@DEls, zmieniłem strefy czasowe w konfiguracji systemu Windows - to dla mnie resetuje zegar systemowy. Czy później ponownie uruchomiłeś przeglądarkę? Jeśli czas nie rozwiązał problemu, być może będziesz musiał zajrzeć do innego rozwiązania opisanego w tym temacie.
Sebastiaan Ordelman,
Nie wiem dlaczego, ale to zadziałało dla mnie. Rok został ustawiony na 2048, zmienił go na bieżący rok i wszystko zostało naprawione. Dzięki @SebastiaanOrdelman
deanwilliammills
6

otwórz konsolę i wciśnij URL. przeniesie Cię na stronę API, a następnie na stronie zaakceptuj certyfikat SSL, wróć na stronę aplikacji i załaduj ponownie. pamiętaj, że wcześniej powinny być wydawane certyfikaty SSL dla twojego środowiska deweloperskiego.

Ramin Ahmadi
źródło
4

Jeśli tworzysz i pracujesz na komputerze z systemem Windows, po prostu dodaj localhost jako stronę zaufaną .

I tak, zgodnie z komentarzem DarrylGriffiths, chociaż może się wydawać, że dodajesz ustawienie Internet Explorera ...

Uważam, że są to ustawienia systemu Windows zamiast IE. Chociaż stwardnienie rozsiane zwykle zakłada, że ​​są one tylko IE (stąd alert obok „Włącz tryb chroniony”, że wymaga ponownego uruchomienia IE) ...

Jim G.
źródło
4
Używam Linux Ubuntu, nie Windows, jakieś rozwiązanie?
user1735921
4

Oferując inne potencjalne rozwiązanie tego błędu.

Jeśli masz aplikację frontendową, która wykonuje wywołania API do backendu, upewnij się, że odwołujesz się do nazwy domeny, dla której certyfikat został wydany.

na przykład

https://example.com/api/etc

i nie

https://123.4.5.6/api/etc

W moim przypadku nawiązywałem połączenia API z bezpiecznym serwerem z certyfikatem, ale korzystałem z adresu IP zamiast nazwy domeny. To rzuciło Failed to load resource: net::ERR_INSECURE_RESPONSE.

Liam George Betsworth
źródło
0

Wypróbuj ten kod, aby uważać i zgłaszać możliwe net::ERR_INSECURE_RESPONSE

Miałem również ten problem, używając samopodpisanego certyfikatu, którego postanowiłem nie zapisywać w Ustawieniach Chrome. Po uzyskaniu dostępu do domeny https i zaakceptowaniu certyfikatu wywołanie ajax działa poprawnie. Ale gdy upłynie limit czasu akceptacji lub zanim zostanie ona zaakceptowana, jQuery.ajax()wywołanie nie powiedzie się po cichu: timeoutparametr nie wydaje się pomocny, a error()funkcja nigdy nie zostaje wywołana.

Jako taki, mój kod nigdy nie odbiera success()ani error()połączenia, i dlatego się zawiesza. Uważam, że jest to błąd w obsłudze tego błędu przez jquery. Moim rozwiązaniem jest wymuszenie error()połączenia po upływie określonego czasu.

Ten kod zakłada wywołanie jquery ajax formularza jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional}).

Uwaga: Prawdopodobnie będziesz chciał zmienić funkcję w setTimeoutcelu najlepszej integracji z interfejsem użytkownika: zamiast wywoływania 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);
}
JJ Stiff
źródło
0

Ten problem wynika z twojego https, który oznacza certyfikację SSL. Spróbuj na Localhost.

Sachin z Pune
źródło