Мы столкнулись с несовместимыми ошибками клиента, когда одностраничное приложение JavaScript отправляло запросы на выборку.Следует отметить, что все они запросы одного и того же происхождения .
let request = new Request(url, options);
...
window.fetch(request)
.then(response => response.json())
.then(data => ...)
.catch(error => ...)
Около 5% обещаний отклоняются со следующей ошибкой, несмотря на то, что сервер и браузер получают ответ 200 OK
:
TypeError: Failed to fetch
Я в тупике ... Все мои поиски приводят к обсуждению ошибок CORS.Похоже, это не применимо, учитывая, что все это запросы одного и того же происхождения.Что вызывает выборку для выброса TypeError
?
. На вкладке «Сеть» в Chrome DevTools я могу подтвердить, что запрос на выборку завершается ответом 200 OK
и допустимым JSON.Я также могу подтвердить, что URL того же происхождения.Я также могу подтвердить, что нет предварительных запросов CORS.Я воспроизвел эту проблему на Chrome 66 и Safari 11.1.Однако мы получили поток сообщений об ошибках из различных версий Chrome и Safari, как для настольных, так и для мобильных устройств.
РЕДАКТИРОВАТЬ:
Это не похоже на дубликатсвязанного вопроса, поскольку мы не отправляем запросы CORS, не устанавливаем mode: "no-cors"
, а не устанавливаем заголовок Access-Control-Allow-Origin
.
Кроме того, я перезапустил тесты с явно установленной опцией mode: 'same-origin'
.Запросы являются (все еще) успешными;однако мы (все еще) получаем прерывистый TypeError
.