Не удалось загрузить ресурс: net:: ERR_INSECURE_RESPONSE

Есть ли способ обмануть сервер, чтобы я не получил эту ошибку:

Содержимое было заблокировано, поскольку оно не было подписано действительным сертификатом безопасности.

Я вытаскиваю iframe html-сайта на другой веб-сайт, но я продолжаю получать консольную (хром) ошибку в заголовке этого вопроса, а в Internet explorer говорится:

Содержимое было заблокировано, поскольку оно не было подписано действительным сертификатом безопасности.

Ответ 1

Возможно, ваш ресурс использует самоподписанный SSL-сертификат по протоколу HTTPS. Chromium, поэтому Google Chrome блокирует по умолчанию такой вид ресурсов, который считается незащищенным.

Вы можете обойти это следующим образом:

  • Предполагая, что ваш URL-адрес рамки https://www.domain.com, откройте новую вкладку в хроме и перейдите к https://www.domain.com.
  • Chrome попросит вас принять сертификат SSL. Примите это.
  • Затем, если вы перезагрузите страницу своей рамкой, вы увидите, что теперь она работает

Проблема, как вы можете догадаться, заключается в том, что каждый посетитель вашего сайта должен выполнить эту задачу, чтобы получить доступ к вашему фрейму.

Вы можете заметить, что chrome заблокирует ваш URL для каждого сеанса навигации, а хром может запомнить навсегда, что вы доверяете этому домену.

Если ваш кадр доступен HTTP, а не HTTPS, я предлагаю вам его использовать, поэтому эта проблема будет решена.

Ответ 2

Иногда Google Chrome выдает эту ошибку, даже если это не так. Я испытал это, когда у Chrome появилась новая версия, и ее нужно было перезапустить. После перезапуска одной и той же страницы без ошибок. Ошибка в консоли:

net::ERR_INSECURE_RESPONSE

Ответ 3

Я по-прежнему столкнулся с проблемой, описанной выше на тестовом устройстве Asus T100 Windows 10 для обоих (современных) браузеров Edge и Chrome.

Решение находилось в настройках даты/времени устройства; так или иначе дата была установлена ​​неправильно (дата в прошлом). Восстановление этого путем установки правильной даты (и перезапуска браузеров) решило проблему для меня. Надеюсь, что я избавлю кого-то от головной боли, отлаживая эту проблему.

Ответ 4

откройте консоль и нажмите URL внутри. он перенесет вас на страницу API, а затем на странице примет сертификат SSL, вернитесь на страницу своего приложения и перезагрузите. помните, что сертификаты SSL должны были быть выпущены для вашей среды Dev раньше.

Ответ 5

Если вы разрабатываете и работаете с Windows-машиной, просто добавьте localhost в качестве надежного сайта.

И да, на комментарий DarrylGriffiths, хотя может показаться, что вы добавляете настройки Internet Explorer...

Я считаю, что это настройки Windows, а не IE. Хотя MS, как правило, полагают, что они только IE (следовательно, предупреждение рядом с "Включить защищенный режим", что он повторно перезапустил IE)...

Ответ 6

Предлагая другое возможное решение этой ошибки.

Если у вас есть внешнее приложение, которое вызывает вызовы API для бэкэнд, убедитесь, что вы указали имя домена, на которое был выпущен сертификат.

например.

https://example.com/api/etc

и не

https://123.4.5.6/api/etc

В моем случае я делал вызовы API на безопасный сервер с сертификатом, но вместо IP-адреса вместо IP-адреса. Это бросило a Failed to load resource: net::ERR_INSECURE_RESPONSE.

Ответ 7

Попробуйте этот код, чтобы посмотреть и сообщить о возможном 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, чтобы лучше интегрировать ваш пользовательский интерфейс: вместо вызова 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);
}

Ответ 8

Эта проблема связана с вашим https, что означает SSL-сертификацию. Попробуйте на Localhost.