节点套接字挂断错误与http
node socket hang up error with http
我按照node http document向本地服务器写删除请求,但是收到socket hang up error,我查过的类似问题是:
NodeJS - What does “socket hang up” actually mean?
但实际上没有人适合我的方案。
我认为这是代码错误,因为我使用邮递员它对我有用,以下是我的代码
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)' ]
显然,请求头没有内容长度。因此,您在写入函数中写入的任何内容都将被忽略。希望这是根本原因。
对我来说 - 通过添加 Content-Length header.
解决
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Content-Length': Buffer.byteLength(JSON.stringify(order))
}
我按照node http document向本地服务器写删除请求,但是收到socket hang up error,我查过的类似问题是:
NodeJS - What does “socket hang up” actually mean?
但实际上没有人适合我的方案。
我认为这是代码错误,因为我使用邮递员它对我有用,以下是我的代码
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)' ]
显然,请求头没有内容长度。因此,您在写入函数中写入的任何内容都将被忽略。希望这是根本原因。
对我来说 - 通过添加 Content-Length header.
解决 headers: {
'Content-Type': 'application/json; charset=utf-8',
'Content-Length': Buffer.byteLength(JSON.stringify(order))
}