节点套接字挂起错误与http

时间:2015-08-06 19:59:14

标签: javascript node.js sockets http request

我跟着node http document向本地服务器写了一个删除请求,但收到套接字挂断错误,我检查的类似问题是:

我认为这是代码错误,因为我使用postman它适用于我,以下是我的代码

var options = {
    hostname: 'localhost',
    port: 3000,
    path: '/accounts/abc'
    method: 'DELETE',
    headers: {
        'Content-Type': 'application/json; charset=utf-8'
    }
};

var order = {
    "secret": "abc_secret"
};

var content = JSON.stringify(order);
var req = http.request(options, function(res) {
    console.log('STATUS: ' + res.statusCode);
    res.on('data', function(chunk) {
        console.log('resp: ' + chunk);
    });
});


req.on('error', function(err) {
    console.error('error: ' , err.stack.split("\n"));
});

req.write(content);

req.end();

,错误是:

error:  [ 'Error: socket hang up',
  '    at createHangUpError (_http_client.js:215:15)',
  '    at TLSSocket.socketOnEnd (_http_client.js:300:23)',
  '    at TLSSocket.emit (events.js:129:20)',
  '    at _stream_readable.js:908:16',
  '    at process._tickCallback (node.js:355:11)' ]

2 个答案:

答案 0 :(得分:3)

显然,请求标头没有内容长度。因此,无论您在write函数中写入什么都将被忽略。希望这是根本原因。

答案 1 :(得分:0)

对我来说 - 通过添加Content-Length标头来解决。

 headers: {
    'Content-Type': 'application/json; charset=utf-8',
    'Content-Length': Buffer.byteLength(JSON.stringify(order))
 }