2013-08-09 12 views
6
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/"); 

tôi thực hiện sau lệnh curl:Node.js: curl: (52) Rỗng trả lời từ máy chủ với không gian trong yêu cầu không được mã hóa

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 

bạn có thể vui lòng giải thích lý do tại sao tôi nhận được curl 52 ?? ?

Trong trường hợp này, tôi muốn gửi lại 500. Tôi có thể làm điều đó?

+0

chúng tôi cần phần còn lại của mã nút và dòng lệnh curl. Hy vọng rằng có một res.send trong đó ... – Paul

+0

'app.get ('/ item/id')' có nghĩa là '/ item/id' không phải'/item/item1' – Paul

+0

Thử tùy chọn '-I' curl cho giải trình. (Trên curl máy của tôi gửi 2 yêu cầu cho lệnh 'curl http: // google.com/xy': lệnh đầu tiên tới Google Server và lệnh thứ hai là' y'.) – elmigranto

Trả lời

1

Ngay cả khi thiếu res.send có vẻ như vấn đề với tuyến đường của bạn. bạn có thể có nghĩa là.

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

Lưu ý : trước id. Điều này tạo ra một biến có thể được truy cập trên req.params.id.

+0

Tôi đã cập nhật bài đăng của mình bằng mã và chi tiết đầy đủ. – GJain

0

Tôi cũng đang có câu hỏi này. Tôi đoán curl hy vọng url đã được mã hóa nếu được trích dẫn bằng dấu ngoặc kép. Nếu nó tìm thấy khoảng trống trong url, nó sẽ coi đó là một url không hợp lệ.

Và điều này hoàn toàn khác với lệnh wget. Nếu bạn chạy này:

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

thực wget mã hóa url cho bạn và yêu cầu thực tế sẽ được gửi dưới dạng:

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

Những loại sự kiện thực sự trêu chọc não của chúng ta.