【问题标题】:Failed to load resource: the server responded with a status of 400 (Bad Request): on Angular + NodeJS加载资源失败:服务器响应状态为 400(错误请求):在 Angular + NodeJS 上
【发布时间】: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


【解决方案1】:

我找到了问题,问题是发送到后端的 HTTP GET 太大。经过更深入的分析,我发现 cookie 对我的情况产生了巨大影响。

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

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

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2017-10-20
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多