Node.js:curl:(52)来自服务器的空回复,请求未编码的空间

时间:2013-08-09 23:25:22

标签: node.js express

var http = require('http');

var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});

server.listen(8000);
console.log("Server running at http://127.0.0.1:8000/");

我执行了以下curl命令:

curl "http://127.0.0.1:8000/"
Hello World

// space is not encoded
curl "http://127.0.0.1:8000/x y"
curl: (52) Empty reply from server

curl "http://127.0.0.1:8000/x"
Hello World

// space is encoded
curl "http://127.0.0.1:8000/x%20y"
Hello World

你能解释一下为什么我会卷曲52 ???

在这种情况下,我想送回500。我能这样做吗?

2 个答案:

答案 0 :(得分:1)

即使缺少res.send,您的路线也会出现问题。你可能意味着。

app.get('/item/:id', function(...) {
  ..
})

注意:之前的id。这将创建一个可以在req.params.id上访问的变量。

答案 1 :(得分:0)

我也有这个问题。 我想curl期望已经编码的url,如果用双引号引用的话。如果它在url中找到空格,则会将其视为无效的URL。

这与wget命令完全不同。如果你运行这个:

wget "http://127.0.0.1:8000/x y"

实际上wget为你编码网址,请求实际上将发送为:

http://127.0.0.1:8000/x%20y

这些事实真的逗我们的大脑。