POST 到 Node.js 服务器导致长时间负载,导致 ERR_EMPTY_RESPONSE

Posted

技术标签:

【中文标题】POST 到 Node.js 服务器导致长时间负载,导致 ERR_EMPTY_RESPONSE【英文标题】:POST to Node.js Server causing long load that results in an ERR_EMPTY_RESPONSE 【发布时间】:2018-07-20 21:56:20 【问题描述】:

我有一个简单的表单,可以将用户输入发布到服务器。提交表单后,页面加载很长时间导致 ERR_EMPTY_RESPONSE。但是,我可以 console.log 来自表单的输入很好地验证表单确实发布到服务器。

这是我的工作:

<form method="post" action="/">
    <input type="text" name="userZipcode" placeholder="Enter your zip code">
    <button type="submit">ENTER</button>
</form>

app.use(bodyParser.urlencoded(
    extended: false
));

app.use(bodyParser.json());

app.get('/', (req, res, next) => 
    fetch(url)
    .then(res => res.json())
    .then(data => res.render('pages/index'))
    .catch(err => 
        console.log(err);
        res.sendStatus(500);
    );
);

app.post('/', function(req, res) 
    let zipcode = req.body.userZipcode;
    console.log('Your location is: ' + zipcode);
);

注意:获取请求最终会将来自 API 响应的数据传递到我的 EJS 页面,但现在它只呈现索引页面。

上面的表格有效,我从终端的输入字段中得到了一个console.log 和一个邮政编码,正如预期的那样。但是,之后页面只会加载,直到它以上述错误结束。我知道我错过了一些重要的东西,但我不知道那是什么!

【问题讨论】:

【参考方案1】:

在您的 POST 路线中,您必须做出回应。您的代码没有响应请求。这会导致 ERR_EMPTY_RESPONSE。

app.post('/', function(req, res) 
    let zipcode = req.body.userZipcode;
    console.log('Your location is: ' + zipcode);
    res.end("your response");
);

【讨论】:

以上是关于POST 到 Node.js 服务器导致长时间负载,导致 ERR_EMPTY_RESPONSE的主要内容,如果未能解决你的问题,请参考以下文章

检测需要很长时间的 node.js http.get 调用

GCP 云上的长时间运行作业

nodejsrequest.post请求服务端长时间不响应程

更换ec2实例后,负载均衡器需要很长时间才能建立连接

通过 POST 请求将数据从 node.js 服务器发送到 node.js 服务器

通过 POST 请求将数据从 node.js 服务器发送到 node.js 服务器