7
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

你能解释一下为什么我得到 curl 52 吗???

在这种情况下,我想寄回 500。我可以这样做吗?

4

2 回答 2

1

即使丢失res.send了,您的路线看起来也有问题。你可能是说。

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

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

于 2013-08-09T23:32:07.150 回答
0

我心里也有这个问题。我猜curl如果用双引号引用,则期望已经编码的 url。如果它在 url 中找到空格,它将认为它是无效的 url。

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

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

实际上 wget 为您编码 url 并且请求实际上将被发送为:

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

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

于 2017-12-08T10:42:33.163 回答