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


206

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

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

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

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


Похоже, вы пытаетесь получить доступ к небезопасному ресурсу из защищенных ресурсов. Я считаю, что у них есть похожая проблема здесь .
Дерек

Ответы:


301

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

Вы можете обойти это так:

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

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

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

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


1
Я думаю, что когда вы открываете другую вкладку, вам нужно перейти https://domain.comи принять сертификат SSL.
Hozefa

2
@ RémiBecheras, есть ли способ заставить Chrome не забыть доверять сертификату в течение нескольких сеансов навигации?
Феликс

3
Чтобы добавить такое правило, вы должны получить сертификат. Если он твой, он у тебя уже есть. Если нет, щелкните значок https слева на панели адресов> информация о сертификате> подробности> экспорт. Затем используйте этот файл
Rémi Becheras

1
Это также сработало для странного случая, когда сайт отправлял запрос в тот же домен (сам по себе), который я только что одобрил, продолжая проходить самоподписанный сертификат, но затем Chrome выдавал эту ошибку.
Майкл

1
Есть ли способ сделать такой обход через клиентский код? То есть, могу ли я запрограммировать в клиенте «эй, этот сервер, к которому вы пытаетесь получить доступ, выглядит отрывочно, но все в порядке, поверьте мне. Я написал вам обоим, вы технически кодируете братьев / сестер / родственных братьев и сестер»?
дискодан

33

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

net::ERR_INSECURE_RESPONSE

7
Подтверждено, что перезапуск Chrome (и уничтожение всех фоновых процессов Chrome) исправил это для меня.
Оран Деннисон

5
не работает .. это самозаверяющий сертификат .. он не будет работать при перезапуске
user1735921

1
Подтвердил и со мной!
Немке

@Balazs, перезапуск браузера единственный путь? Предполагая, что мы не можем позволить себе перезапустить, есть ли способ сделать это через chrome://net-internals?
Pacerier

1
Перезапуск Chrome (без фоновых процессов) исправил это и для меня. Спасибо!
EnocNRoll - AnandaGopal Pardue

8

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

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


Я столкнулся с аналогичной ошибкой на Asus Zenbook под управлением Windows 8. К сожалению, это не сработало для меня, но можете ли вы объяснить более подробно, как вы сбрасываете дату / время? Просто установив часовой пояс через интерфейс Windows?
DEls

@Dels, я переключил часовые пояса в конфигурации Windows - это сбросило системные часы для меня. Вы перезапустили браузер после этого? Если выбор времени не помог решить проблему, возможно, вам придется поискать другое решение, описанное в этом разделе.
Себастьян Ордельман

Я не знаю почему, но это сработало для меня. Год был установлен на 2048, поменял его на текущий и все исправили. Спасибо @SebastiaanOrdelman
deanwilliammills

6

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


4

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

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

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


4
Я использую Linux Ubuntu, а не Windows, любое решение?
user1735921

4

Предлагая другое потенциальное решение этой ошибки.

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

например

https://example.com/api/etc

и нет

https://123.4.5.6/api/etc

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.