Не удалось загрузить ресурс: сервер ответил статусом 400 (неверный запрос): на Angular + NodeJS - PullRequest
1 голос
/ 30 мая 2020

У меня есть приложение Angular и NodeJS с Express (v4.17.1). Я представляю REST API следующим образом:

app.get('/myRestApi', function (req, res) 
{
  console.log('here you are ... ');
  res.end('success!\n');
});

, а body этого API содержит следующие параметры:

{"name":"Joe",
 "surname":"Soap",
 "coordinate":"ASNDNFNS;SDFGSDFGSDF;ASFRTGERG;SERFQEAWE"}

Проблема в том, что когда я получаю поле coordinate больше определенной суммы (так что их много ASFRTGERG;SERFQEAWE). Я получаю сообщение об ошибке в браузере (независимо от браузера):

The server responded with a status of 400 (Bad Request). 

Поскольку я не получаю журнал console.log('here you are ... ');, я полагаю NodeJS отбрасывает его, возвращая 400. Я почти уверен, что NodeJS возвращает это, так как в браузере я получаю:

HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Content-Length: 0
Connection: keep-alive
X-Powered-By: Express
Strict-Transport-Security: max-age=31536000

**** UPDATE ****

I ' Мы установили уровень DEBUG на NodeJS, и запрос никогда не попадет на серверную часть, так что проблема, как я полагаю, находится на стороне Angular. В какой-то момент на стороне Angular я делаю следующее:

window.location.href = this.url;   //this.url = /myRestApi

, который переходит на URL-адрес /myRestApi. Я считаю, что здесь возникла проблема с механизмом window.location.href, так как одно поле в теле этого запроса (см. Выше) слишком велико, и он вылетает? ... или что-то, что вызывает 400.

Предложения?

1 Ответ

0 голосов
/ 31 мая 2020

Я обнаружил проблему, и проблема заключалась в том, что HTTP-запрос GET, отправленный на бэкэнд, был слишком большим. После более глубокого анализа я увидел, что повар ie в моем случае очень сильно изменился.

Я исправил это, увеличив максимальный размер HTTP-заголовка:

node --max-http-header-size 21000 application.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...