AngularJS получает код состояния 0 для 413 (слишком большой объект запроса) в Loopback API

<сильный>1. Немного информации

У меня есть клиентское приложение AngularJS 1.3.15, отправляющее запросы к моему loopback API.

В приложении я перехватываю результаты запроса (с помощью $httpProvider.interceptors) и интерпретирую коды состояния для отображения осмысленных сообщений, когда пользователь что-то делает — например, я перехватываю 401 ответ, сообщающий пользователю, что у него нет авторизации, 200 — когда он сохраняет что-то успешно и так далее.

<сильный>2. Проблема

Например, если пользователь попытается загрузить слишком большое изображение, полезная нагрузка запроса превысит мой предел удаленного взаимодействия, и я смогу перехватить requestError, но код состояния всегда показывает 0. Глядя на консоль браузера, я вижу это:

PUT http://localhost:3000/api/Modules?id=9 413 (Request Entity Too Large)
XMLHttpRequest cannot load http://localhost:3000/api/Modules?id=9. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 413.

Проблема в том, что если сервер отключен, я также получаю код состояния 0 при перехвате requestError, поэтому я не могу отличить ошибку подключения к серверу от ошибки отправки слишком большого количества данных.

Есть ли вероятность, что проблема связана с промежуточным программным обеспечением экспресс-маршрутизатора? Я не могу найти никого, у кого была бы такая же проблема...


person jcsmesquita    schedule 28.03.2015    source источник


Ответы (1)


У меня была такая же проблема, но проблема не была вызвана AngularJS. Подсказка к проблеме:

 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

Поскольку CORS не был настроен для компонента, выдающего ошибку 413, AngularJS не смог получить правильный код состояния. Мне пришлось включить cors в моем случае в моем бэкэнде до того, как nodejs -> express -> bodyparser был инициирован, и проблема исчезла.

person crascher    schedule 22.07.2017