无法加载资源:服务器在Angular + NodeJS上以400(错误请求)的状态响应

时间:2020-05-29 22:43:58

标签: javascript node.js express http

我有一个带有Express(v4.17.1)的Angular和NodeJS应用程序。我公开了这样的REST API:

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

和此API的body包含以下参数:

{"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

****更新****

我已经在NodeJS上设置了DEBUG级别,并且请求从未到达后端,所以我相信问题出在Angular方面。在“角度”一侧的某一点上,我这样做:

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

,它导航到/myRestApi URL。我认为window.location.href机制在这里遇到了问题,因为此请求正文的一个字段(请参见上文)太大,然后崩溃了? ...或导致400的原因。

建议?

1 个答案:

答案 0 :(得分:0)

我发现了问题,问题在于发送到后端的HTTP GET太大。经过更深入的分析,我发现该Cookie对我的情况有很大的影响。

我通过增加最大HTTP标头大小来修复它:

node --max-http-header-size 21000 application.js