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