【发布时间】:2020-05-29 22:43:58
【问题描述】:
我有一个带有 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 方面。在 Angular 方面的某一时刻,我会这样做:
window.location.href = this.url; //this.url = /myRestApi
导航到/myRestApi URL。我相信window.location.href 机制在这里遇到了问题,因为该请求正文的一个字段(见上文)太大然后它崩溃了? ...或导致 400 的原因。
建议?
【问题讨论】:
-
当你说“这个 API 的主体......”我假设你的意思是 POST 请求的主体?您是否尝试将数据发布到
/myRestApi端点?如果是这样,您定义的端点仅接受 GET 请求。正如您在X-Powered-By: Express标头中看到的那样,Express 正在接收请求,但您收到错误,因为没有 POST 处理程序。 -
好点,我已经为同一个界面添加了 POST 方法,但 Angular 明确表示:[0] [HPM] GET /myRestApi -> http://[::1]:7892 I '再次尝试减小'坐标'字段的大小并确实使用 GET。如果我在重定向时必须指定某些内容,我会在徘徊?
标签: javascript node.js express http