Как обращаться с ERR_INSECURE_RESPONSE в расширении Google Chrome

Я делаю простой запрос GET для своего URL-адреса, и я получаю сообщение об ошибке "ERR_INSECURE_RESPONSE". Это нормально, так как сертификат самоподписан. Но у меня есть два вопроса:

  • Есть ли способ преодолеть это в расширении? Как установить флаг в запросе или так? (вероятно, не вероятно)
  • Есть ли способ справиться с этой ошибкой (чтобы уведомить пользователя)? Я проверил все поля XMLHttpRequest и не вижу ничего, что может указывать на эту ошибку. Поле состояния имеет значение 0 (ноль).

Любые идеи?

Ответ 1

  • Нет, API расширения не предлагает никакого способа изменить настройки или поведение SSL.
  • Вы можете использовать событие chrome.webRequest.onErrorOccurred, чтобы получать уведомления о сетевых ошибках. Свойство error будет содержать код ошибки сети.

Например:

chrome.webRequest.onErrorOccurred.addListener(function(details) {
    if (details.error == 'net::ERR_INSECURE_RESPONSE') {
        console.log('Insecure request detected', details);
    }
}, {
    urls: ['*://*/*'],
    types: ['xmlhttprequest']
});
var x = new XMLHttpRequest;
x.open('get','https://example.com');
x.send();

Если только для тестирования, запустите Chrome только с флагом --ignore-certificate-errors, чтобы разрешить использование самозаверяющих сертификатов. Это влияет на все веб-сайты в том же сеансе просмотра, поэтому я предлагаю использовать для этой цели отдельный каталог профиля, добавив --user-data-dir=/tmp/temporaryprofiledirectory к аргументам командной строки.

Другой способ избежать ошибки в первую очередь - получить действительный сертификат SSL. Для некоммерческих целей вы можете получить бесплатный сертификат SSL в https://www.startssl.com.