Fehler beim Laden der Ressource: net :: ERR_INSECURE_RESPONSE

206

Gibt es eine Möglichkeit, den Server auszutricksen, damit ich diesen Fehler nicht bekomme:

Der Inhalt wurde blockiert, da er nicht mit einem gültigen Sicherheitszertifikat signiert war.

Ich ziehe einen Iframe einer HTML-Website in eine andere Website, erhalte jedoch weiterhin den Konsolenfehler (Chrome) im Titel dieser Frage und im Internet Explorer heißt es:

Der Inhalt wurde blockiert, da er nicht mit einem gültigen Sicherheitszertifikat signiert war.

user3594437
quelle
Es hört sich so an, als würden Sie versuchen, von einer sicheren Ressource aus auf eine unsichere Ressource zuzugreifen. Ich glaube , dass sie ein ähnliches Problem hier .
Derek

Antworten:

301

Ihre Ressource verwendet wahrscheinlich ein selbstsigniertes SSL-Zertifikat über das HTTPS-Protokoll. Chromium, daher blockiert Google Chrome diese Art von Ressource standardmäßig als unsicher.

Sie können dies folgendermaßen umgehen:

  • Angenommen, die URL Ihres Frames lautet https://www.domain.com: Öffnen Sie einen neuen Tab in Chrome und gehen Sie zu https://www.domain.com.
  • Chrome fordert Sie auf, das SSL-Zertifikat zu akzeptieren. Akzeptieren.
  • Wenn Sie dann Ihre Seite mit Ihrem Frame neu laden, können Sie sehen, dass es jetzt funktioniert

Wie Sie sich vorstellen können, besteht das Problem darin, dass jeder Besucher Ihrer Website diese Aufgabe ausführen muss, um auf Ihren Frame zuzugreifen.

Sie können feststellen, dass Chrome Ihre URL für jede Navigationssitzung blockiert, während Chrome sich für immer merken kann, dass Sie dieser Domain vertrauen.

Wenn auf Ihren Frame nicht über HTTPS, sondern über HTTP zugegriffen werden kann, empfehlen wir Ihnen, ihn zu verwenden, damit dieses Problem behoben wird.

Rémi Becheras
quelle
1
Ich denke, wenn Sie die andere Registerkarte öffnen, müssen Sie https://domain.comdas SSL-Zertifikat aufrufen und akzeptieren.
Hozefa
2
@ RémiBecheras, gibt es eine Möglichkeit, Chrome dazu zu bringen, sich daran zu erinnern, dem Zertifikat über mehrere Navigationssitzungen hinweg zu vertrauen?
Felix
3
Um eine solche Regel hinzuzufügen, müssen Sie das Zertifikat erhalten. Wenn es deins ist, hast du es bereits. Wenn nicht, klicken Sie auf das linke https-Symbol in der Adressleiste> Zertifikatinformationen> Details> Exportieren. Verwenden Sie dann diese Datei
Rémi Becheras
1
Dies funktionierte auch für den seltsamen Fall, dass eine Site eine Anfrage an dieselbe Domain (selbst) sendete, die ich gerade genehmigt hatte, nachdem das selbstsignierte Zertifikat überschritten wurde, aber Chrome diesen Fehler auslöste.
Michael
1
Gibt es eine Möglichkeit, diese Art der Umgehung durch clientseitigen Code durchzuführen? Das heißt, kann ich in den Client programmieren "Hey, dieser Server, auf den Sie zugreifen möchten, sieht lückenhaft aus, aber es ist in Ordnung, vertrauen Sie mir. Ich habe Ihnen beiden geschrieben: Sie sind technisch Code-Brüder / Schwestern / geschlechtsneutrale Geschwister"?
Discodane
33

Manchmal löst Google Chrome diesen Fehler aus, auch wenn dies nicht der Fall sein sollte. Ich habe es erlebt, als Chrome eine neue Version hatte und sie neu gestartet werden musste. Nach dem Neustart funktionierte dieselbe Seite fehlerfrei. Der Fehler in der Konsole war:

net::ERR_INSECURE_RESPONSE
Balazs Nemeth
quelle
7
Bestätigt, ein Neustart von Chrome (und das Beenden aller Hintergrund-Chrome-Prozesse) hat das Problem für mich behoben.
Oran Dennison
5
funktioniert nicht .. es ist ein selbstsigniertes Zertifikat .. es funktioniert nicht durch Neustart
user1735921
1
Bestätigt auch bei mir!
Nemke
@ Balazs, Ist ein Neustart des Browsers der einzige Weg? Angenommen, wir können uns einen Neustart nicht leisten, gibt es eine Möglichkeit, dies über zu tun chrome://net-internals?
Pacerier
1
Ein Neustart von Chrome (ohne Hintergrundprozesse) hat es auch für mich behoben. Vielen Dank!
EnocNRoll - AnandaGopal Pardue
8

Das oben beschriebene Problem trat immer noch auf einem Asus T100 Windows 10-Testgerät für den (aktuellen) Edge- und Chrome-Browser auf.

Die Lösung lag in den Datums- / Uhrzeiteinstellungen des Geräts . Irgendwie wurde das Datum nicht richtig eingestellt (Datum in der Vergangenheit). Das Wiederherstellen dieses Problems durch Einstellen des richtigen Datums (und Neustarten der Browser) löste das Problem für mich. Ich hoffe, ich erspare jemandem Kopfschmerzen beim Debuggen dieses Problems.

Sebastiaan Ordelman
quelle
Bei einem Asus Zenbook unter Windows 8 tritt ein ähnlicher Fehler auf. Leider hat dies bei mir nicht funktioniert. Können Sie jedoch genauer erklären, wie Sie Datum und Uhrzeit zurücksetzen? Nur durch Einstellen der Zeitzone durch die Windows-Benutzeroberfläche?
DEls
@DEls, ich habe in der Windows-Konfiguration die Zeitzone gewechselt - das hat die Systemuhr für mich zurückgesetzt. Haben Sie den Browser danach neu gestartet? Wenn das Problem durch das Timing nicht gelöst wurde, müssen Sie möglicherweise die andere in diesem Thema beschriebene Lösung prüfen.
Sebastiaan Ordelman
Ich weiß nicht warum, aber das hat bei mir funktioniert. Das Jahr wurde auf 2048 festgelegt, auf das aktuelle Jahr geändert und alles festgelegt. Danke @SebastiaanOrdelman
Deanwilliammills
6

Öffnen Sie Ihre Konsole und klicken Sie auf die URL. Sie werden zur API-Seite weitergeleitet und akzeptieren dann auf der Seite das SSL-Zertifikat, kehren zu Ihrer App-Seite zurück und laden neu. Denken Sie daran, dass SSL-Zertifikate zuvor für Ihre Dev-Umgebung ausgestellt worden sein sollten.

Ramin Ahmadi
quelle
4

Wenn Sie entwickeln und mit einem Windows-Computer entwickeln, fügen Sie ihn einfach localhost als vertrauenswürdige Site hinzu .

Und ja, laut DarrylGriffiths 'Kommentar, obwohl es so aussieht, als würden Sie eine Internet Explorer-Einstellung hinzufügen ...

Ich glaube, das sind eher Windows- als IE-Einstellungen. Obwohl MS eher davon ausgehen, dass sie nur IE sind (daher die Warnung neben "Geschützten Modus aktivieren", dass ein Neustart des IE erforderlich ist) ...

Jim G.
quelle
4
Ich benutze Linux Ubuntu, nicht Windows, irgendeine Lösung?
user1735921
4

Bietet eine weitere mögliche Lösung für diesen Fehler.

Wenn Sie über eine Frontend-Anwendung verfügen, die API-Aufrufe an das Backend ausführt, verweisen Sie auf den Domänennamen, für den das Zertifikat ausgestellt wurde.

z.B

https://example.com/api/etc

und nicht

https://123.4.5.6/api/etc

In meinem Fall habe ich API-Aufrufe an einen sicheren Server mit einem Zertifikat durchgeführt, aber die IP anstelle des Domänennamens verwendet. Dies warf ein Failed to load resource: net::ERR_INSECURE_RESPONSE.

Liam George Betsworth
quelle
0

Versuchen Sie diesen Code, um nach einem möglichen zu suchen und ihn zu melden net::ERR_INSECURE_RESPONSE

Ich hatte auch dieses Problem mit einem selbstsignierten Zertifikat, das ich nicht in den Chrome-Einstellungen gespeichert habe. Nach dem Zugriff auf die https-Domäne und dem Akzeptieren des Zertifikats funktioniert der Ajax-Aufruf einwandfrei. Sobald diese Annahme abgelaufen ist oder bevor sie zum ersten Mal angenommen wurde, jQuery.ajax()schlägt der Aufruf stillschweigend fehl: Der timeoutParameter scheint keine Hilfe zu sein und die error()Funktion wird nie aufgerufen.

Daher erhält mein Code niemals einen success()oder einen error()Anruf und hängt daher. Ich glaube, dies ist ein Fehler in der Behandlung dieses Fehlers durch jquery. Meine Lösung besteht darin, den error()Anruf nach einer bestimmten Zeitüberschreitung zu erzwingen .

Dieser Code setzt einen jquery ajax-Aufruf des Formulars voraus jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional}).

Hinweis: Sie möchten wahrscheinlich die Funktion innerhalb von ändern, setTimeoutum sie am besten in Ihre Benutzeroberfläche zu integrieren: anstatt sie aufzurufen 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
quelle
0

Dieses Problem liegt an Ihrem https, was eine SSL-Zertifizierung bedeutet. Probieren Sie Localhost aus.

Sachin aus Pune
quelle