我有一个nodejs进程在侦听服务器上的端口:

app.get('/statistic', function(req, res) {
        log_get_connection(req);

        getStatistic().then(statistic => {
                res.json(statistic);
        });

});


当我尝试通过curl在同一台机器上访问它时:

curl "http://127.0.0.1:<PORT>/statistic"
# or
curl "http://<EXT_IP>:<PORT>/statistic"


我得到:

* Empty reply from server
* Connection #0 to host EXT_IP left intact

curl: (52) Empty reply from server


但是,当我从另一个服务器通过curl访问它时,我看到了成功的HTTP响应。

我不会覆盖res。另外,如果将console.log(statistic)放在res.json(statistic)之前,我会看到statistic是正确的。

更有趣的是,此设置在一段时间内运行良好。

UPD:ufw已禁用。

最佳答案

抱歉,我发现错误-在nodejs代码中,有一部分解析文件。文件已扩展,该方法的执行需要很长时间。

显然,这恰好巧合,以至于当我从第三方服务器发出请求时,该方法设法计算并返回数据,并且在服务器本身询问时没有时间。

服务器在console.log(statistic)停止工作之前停止将结果返回给第三方服务器和res.json(statistic)时,发现错误。

谢谢您的回复!

07-24 09:17