web-dev-qa-db-ja.com

リソースのロードに失敗しました:net :: ERR_INSECURE_RESPONSE

私はこのエラーが発生しないようにサーバーをだますための方法があります:

有効なセキュリティ証明書によって署名されていないため、コンテンツはブロックされました。

私は別のウェブサイトにhtmlウェブサイトのiframeを引っ張っています、しかし私はこの質問のタイトルとインターネットエクスプローラでそれが言うコンソール(クロム)エラーを得続けます:

有効なセキュリティ証明書によって署名されていないため、コンテンツはブロックされました。

205
user3594437

あなたのリソースはおそらくHTTPSプロトコル上の自己署名SSL証明書を使用しています。 Chromiumなので、Google Chromeはデフォルトでこの種のリソースを安全でないと見なしてブロックします。

このようにしてこれを回避することができます。

  • あなたのフレームのURLがhttps://www.domain.comであると仮定すると、chromeで新しいタブを開いてhttps://www.domain.comに行きます。
  • ChromeはSSL証明書を受け入れるように求めます。受け入れ。
  • それで、あなたがあなたのページをあなたのフレームでリロードするなら、あなたは今それがうまくいくことを見ることができるでしょう

あなたが推測できるように問題はあなたのウェブサイトの各訪問者があなたのフレームにアクセスするためにこの仕事をしなければならないということです。

Chromeはあなたがこのドメインを信頼していることを永遠に記憶することができますが、chromeはあなたのURLを各ナビゲーションセッションの間ブロックするでしょう。

あなたのフレームがHTTPSではなくHTTPによってアクセスされることができるならば、私はあなたがそれを使うことを勧めます、それでこの問題は解決されるでしょう。

300
Rémi Becheras

場合によっては、Google Chromeがこのエラーをスローすることもあります。 Chromeが新しいバージョンになったときに経験したため、再起動する必要がありました。同じページを再起動した後、エラーなしで動作しました。コンソールのエラーは次のとおりです。

net::ERR_INSECURE_RESPONSE
33
Balazs Nemeth

私はまだ(最新の)EdgeとChromeブラウザの両方のためのAsus T100 Windows 10テスト装置で上記の問題を経験しました。

解決策は デバイスの//date/time設定にありました ;どういうわけか日付が正しく設定されていません(過去の日付)。正しい日付を設定して(そしてブラウザを再起動して)これを復元することで問題は解決しました。私は誰かがこの問題をデバッグする頭痛の種を省くことを願っています。

8

コンソールを開いて中のURLをクリックしてください。それはあなたをAPIページに連れて行きます、そして次にページでSSL証明書を受け入れて、あなたのアプリページに戻ってリロードしてください。 SSL証明書は、以前にDev環境用に発行されたはずであることを覚えておいてください。

5
Ramin Ahmadi

開発していて、Windowsマシンで開発している場合は、信頼済みサイトとしてlocalhostを追加してください

はい、DarrylGriffithsのコメントによると、Internet Explorerの設定を追加しているように見えるかもしれませんが….

私はそれらがIE設定ではなくWindowsだと思います。 MSはそれらがIEのみであると想定する傾向がありますが(IEを再起動する必要があるという「保護モードを有効にする」の横の警告です)...

4
Jim G.

このエラーに対して別の解決策を提案する。

バックエンドへのAPI呼び出しを行うフロントエンドアプリケーションがある場合は、証明書が発行されたドメイン名を必ず参照してください。

例えば

https://example.com/api/etc

ではなく

https://123.4.5.6/api/etc

私の場合は、証明書を使ってセキュアサーバーにAPI呼び出しを行いましたが、ドメイン名の代わりにIPを使用していました。これはFailed to load resource: net::ERR_INSECURE_RESPONSEを投げました。

この問題はSSL認証を意味するあなたのhttpsによるものです。 Localhostを試してください。

0

このコードを試して、考えられるnet::ERR_INSECURE_RESPONSEを監視して報告してください。

私はChromeの設定に保存しないことを選択した自己署名証明書を使用して、この問題も抱えていました。 httpsドメインにアクセスして証明書を受け入れた後、ajax呼び出しは正常に機能します。しかし、その受け入れがタイムアウトするか、最初に受け入れられる前に、jQuery.ajax()呼び出しは暗黙のうちに失敗します。timeoutパラメーターは役に立ちませんし、error()関数は呼び出されません。

そのため、私のコードはsuccess()またはerror()呼び出しを受け取ることがないためハングします。これはjqueryがこのエラーを処理する際のバグだと思います。私の解決策は、指定されたタイムアウト後にerror()呼び出しを強制することです。

このコードは、フォームjQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})のjquery ajax呼び出しを想定しています。

注:alert()を呼び出すのではなく、setTimeout内の関数を自分のUIに最適に統合するように変更することをお勧めします。

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