最近在用nodejs的http模块请求,在使用原来的服务地址时可以请求过去,服务端有请求内容,客户端也有返回数据,都是正确的,没有问题。
但是在使用了本地主机的地址:127.0.0.1, localhost, 或者本机IP地址时,均会报错,错误信息是:
socket hang up
read ECONNRESET
下面是我利用http模块的代码:
function send_req_http(serverUrl, port, req_client_json, send_res_handler){
var options = {
host: serverUrl,
port: port,
path: '/',
method: 'POST',
json: true,
headers: {
'Content-Type': 'application/json',
'Content-Length': req_client_json.length
}
}
const post_req = http.request(options, send_res_handler)
post_req.on('error', (err)=>{
alert(err);
})
post_req.write(req_client_json);
post_req.end();
}
在使用本地主机作为服务端后,在服务端的日志中,查看之后,服务端接收到了客户端发送的请求,并根据发送请求查询了数据库,并返回了相应内容(这些都是正确的),但是,客户端一直显示这两个错误。
再次说明,利用原来的服务地址使用这个方法是完全可行的,我仅仅是换了一个IP地址。
此外,看了好多百度和github上面类似问题的解决办法,其中options中添加agent:false
呼声最高,尝试了并没有作用,此外,还有将headers中的 'Content-Length': req_client_json.length
转换为 'Content-Length': Buffer.byteLength(req_client_json)
也并没有用,还有一些添加安全协议的,甚至还和版本有关。。。。。
总之,跪求各位大佬帮忙,自己对于这个错误的原理也不是很清楚(只是知道连接出了问题,当然也百度了一些),对于问题的解决办法以及为什么这么解决更是摸不着头脑。黑胖圆在此谢过各位!!!