Как выяснилось, из соображений безопасности браузеры не делятся с веб-разработчиками причинами блокировок запросов, но с низкой точностью и по косвенным признакам причину ошибки все же можно определить:
const url = 'some url';
try {
const response = await fetch(url);
//.....
} catch {
if (url.startsWith('http:')) {
console.log(`It's may be a mixed content error`);
} else {
try {
await fetch(url, {'mode':'no-cors'}); //если ресурс доступен, то ошибки не будет
console.log(`It's may be a CORS error`);
} catch {
console.log('Other error');
}
}
}
Применяя это решение где-либо, имейте в виду, что этот способ не дает 100% точный ответ, является ли ошибка CORS или нет.