Как обработать 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/.