Не удалось загрузить ресурс: 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.