gpt4 book ai didi

node.js - Node : Can't bind to IPv6 localAddress while using https.请求()

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:23 26 4
gpt4 key购买 nike

使用 HTTP 时,我可以很好地绑定(bind)到 localAddress,但是当我切换到 HTTPS 时,我会收到错误:bind EINVAL。请考虑以下代码:

var http = require('http');
var https = require('https');
var options = { host:'icanhazip.com',path:'/',localAddress:'2604:a880:1:20::27:a00f',family:6 };
callback = function(response) {
var data = '';
response.on('data',function(chunk) { data+= chunk; });
response.on('error',function(error) { console.log("error: "+error.message); });
response.on('end',function() {
console.log(data);
});
}
http.request(options,callback).end(); // Works. IP:2604:a880:1:20::27:a00f
https.request(options,callback).end(); // Fails. IP:2604:a880:1:20::27:a00f
https.request({host:'icanhazip.com',path:'/',family:6},callback).end(); // Works. IP:2604:a880:1:20::27:a00f

这是运行 Node v5.0.0 时的错误:

Error: bind EINVAL 2604:a880:1:20::27:a00f
at Object.exports._errnoException (util.js:860:11)
at exports._exceptionWithHostPort (util.js:883:20)
at connect (net.js:809:16)
at net.js:984:7
at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10)

工作代码和失败代码之间的唯一区别是设置 localAddress ,具有讽刺意味的是,最后一个示例绑定(bind)到正确的 IP 地址,但不允许您这样做它使用 localAddress

这里的问题是,在我的用例下,我必须从完全独立的 IPv6 地址发出请求,并且它可以很好地处理 HTTP,但我需要它才能处理 HTTPS 请求。目前我只能在使用 cURL 时完成这项工作。您能否提供一些关于为什么会发生这种情况的见解,或者我如何在没有额外库的情况下完成这项工作?

最佳答案

我也遇到了和你一样的问题。弄清楚了。将您的 Node 更新到最新的稳定版本。他们修好了。使用 node --version 检查它,我使用的是 6.6.0,它运行得很好。

我通过 apt-get 获得的版本太旧了。

关于node.js - Node : Can't bind to IPv6 localAddress while using https.请求(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34078439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com