Это побочный эффект при работе с непрозрачными ответами (полученными с mode: 'no-cors'
).Вот выдержка из этого более длинного ответа :
Одна "ошибка", с которой разработчик может столкнуться с с непрозрачными ответами, подразумевает использование их с Cache Storage API .Актуальны две части справочной информации:
- Свойство
status
непрозрачного ответа всегда имеет значение 0
независимо от того,исходный запрос выполнен или не выполнен. - Методы
add()
/ addAll()
API Cache Storage оба будут отклонены, если ответы, полученные в результате любого из запросов, имеютКод состояния, который не находится в диапазоне 2XX .
Из этих двух пунктов следует, что если запрос выполнен как часть вызова add()
/ addAll()
приводит к непрозрачному ответу, он не будет добавлен в кэш.
Вы можете обойти это, явно выполнив fetch()
, а затем вызвав метод put()
снепрозрачный ответ.Тем самым вы эффективно включаете риск того, что ответ, который вы кэшируете, мог быть ошибкой, возвращенной вашим сервером.
const request = new Request('https://third-party-no-cors.com/', {mode: 'no-cors'});
// Assume `cache` is an open instance of the Cache class.
fetch(request).then(response => cache.put(request, response));