我有一个带有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的原因。
建议?
答案 0 :(得分:0)
我发现了问题,问题在于发送到后端的HTTP GET太大。经过更深入的分析,我发现该Cookie对我的情况有很大的影响。
我通过增加最大HTTP标头大小来修复它:
node --max-http-header-size 21000 application.js