我已经设置了NodeJS服务器,正在localhost:3000
上监听,并且正在使用Chrome浏览器对其进行测试。
当响应状态代码为500时:
This page isn’t working
localhost is currently unable to handle this request.
HTTP ERROR 500
以下是重现此内容的示例代码:
let http = require("http");
let state = true;
let server = http.createServer(async function(request, response) {
if (request.url == "/") {
response.statusCode = 500;
response.end(state ? "" : "data");
console.log(state);
state = !state;
}
});
server.listen(3000, async function(error) {
if (error)
return console.log(error);
console.log("server is listening");
});
说实话,我并不担心浏览器如何显示它,因为我的真正客户是系统中的其他进程。但是,即使我将一些数据放在响应正文中,我也要确保此过程接收到正确的状态码(500)。
所以我想知道我的代码中是否有问题(即是否不允许我发送状态为500的数据),或者这仅仅是Chrome的默认行为。
谢谢!
答案 0 :(得分:3)
根据this post和this discussion Chrome,如果显示“友好的”错误页面是服务器响应的,没有正文的错误代码(之前的响应少于512字节),这就是为什么看到不同的行为。
在大多数情况下,您将发送自定义错误页面以及错误代码,以将其显示给用户。因此,如果仍然有自定义页面显示错误,则无需显示错误。
如果只需要验证响应标头,则可以使用chrome的特殊扩展名来查看它。例如,有HTTP Headers。 另外,我想您可以使用某种调试代理,例如fiddler来捕获流量,并检查请求和响应。