IT-Swarm.Net

Fehler beim Laden der Ressource: net :: ERR_INSECURE_RESPONSE

Gibt es eine Möglichkeit, den Server zu betrügen, damit ich diesen Fehler nicht bekomme:

Inhalt wurde blockiert, weil er nicht mit einem gültigen Sicherheitszertifikat signiert wurde. 

Ich ziehe einen iframe einer HTML-Website in eine andere Website, aber ich bekomme immer wieder den Konsolenfehler (Chrome) im Titel dieser Frage und im Internet Explorer heißt es:

Inhalt wurde blockiert, weil er nicht mit einem gültigen Sicherheitszertifikat signiert wurde.

205
user3594437

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

Sie können dies auf folgende Weise umgehen:

  • Wenn Sie davon ausgehen, dass die URL Ihres Frames https://www.domain.com ist, öffnen Sie eine neue Registerkarte in Chrome und gehen Sie zu https://www.domain.com.
  • Chrome fordert Sie auf, das SSL-Zertifikat zu akzeptieren. Akzeptieren.
  • Wenn Sie Ihre Seite dann mit Ihrem Frame neu laden, können Sie feststellen, dass sie jetzt funktioniert

Wie Sie sich vorstellen können, ist das Problem, 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 für immer speichern kann, wenn Sie dieser Domäne vertrauen.

Wenn auf Ihren Frame nicht über HTTPS, sondern über HTTP zugegriffen werden kann, sollten Sie ihn verwenden, um dieses Problem zu lösen.

300
Rémi Becheras

Manchmal gibt 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 Fehler in der Konsole war:

net::ERR_INSECURE_RESPONSE
33
Balazs Nemeth

Ich habe immer noch das oben beschriebene Problem auf einem Asus T100 Windows 10-Testgerät für Edge-Browser und Chrome-Browser (auf dem neuesten Stand) entdeckt.

Lösung war in den Datum/Uhrzeit-Einstellungen des Geräts ; Irgendwie war das Datum nicht richtig eingestellt (Datum in der Vergangenheit). Das Wiederherstellen durch Einstellen des korrekten Datums (und Neustarten der Browser) löste das Problem für mich. Ich hoffe, ich kann jemandem beim Debuggen dieses Problems Kopfschmerzen ersparen.

8

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

5
Ramin Ahmadi

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

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

Ich glaube, das sind Windows und nicht IE Einstellungen. MS neigen zwar zu der Annahme, dass sie nur IE sind (daher der Hinweis neben "Enable Protected Mode", dass der IE neu gestartet werden muss).

4
Jim G.

Eine andere mögliche Lösung für diesen Fehler anbieten.

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

z.B.

https://example.com/api/etc

und nicht

https://123.4.5.6/api/etc

In meinem Fall machte ich API-Aufrufe an einen sicheren Server mit einem Zertifikat, verwendete jedoch die IP-Adresse anstelle des Domänennamens. Dies warf einen Failed to load resource: net::ERR_INSECURE_RESPONSE.

Dieses Problem liegt an Ihrem https, das die SSL-Zertifizierung bedeutet. Versuchen Sie es mit Localhost.

0

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

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

Daher empfängt mein Code niemals einen Aufruf von success() oder error() und hängt daher. Ich glaube, das ist ein Fehler in der Handhabung dieses Fehlers durch Jquery. Meine Lösung ist, den Aufruf error() nach einem angegebenen Timeout zu erzwingen.

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

Hinweis: Möglicherweise möchten Sie die Funktion innerhalb von setTimeout ändern, um sie am besten in Ihre Benutzeroberfläche zu integrieren: anstatt alert() aufzurufen.

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
JJ Stiff