如何在 NodeJS 中使用 IPv6 https.request()
How to use IPv6 with NodeJS https.request()
我编写了一个程序来执行我的团队正在开发的嵌入式设备的 REST API。发出 https 请求的代码如下所示:
var options = {
hostname: hostAddress,
port: hostPort,
path: path,
method: methodName,
headers: {
"Content-Type": "application/json",
"Content-Length": post_data.length
}
};
// Request and callback
var request = https.request(
options,
function onResponse( response ) {
// response code happens in here ...
}
);
当 hostAddress
是 IPv4 地址时,此代码工作正常,例如“192.168.1.13”。但是我们最近在嵌入式设备上添加了 IPv6 支持,这也需要进行测试。但是,当 hostAddress
是 IPv6 地址时,上面的相同代码 不 起作用。
https.request() [此处:https://nodejs.org/api/https.html] 的文档没有提及 IPv6。我已尝试对 hostAddress
使用以下每个值,但没有成功。
hostAddress = "fe80::9eb6:54ff:fe90:8b70%eth0";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70%eth0]";
hostAddress = "fe80::9eb6:54ff:fe90:8b70";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70]";
我知道 IPv6 地址是正确的 -- 我从嵌入式系统主机上的 ifconfig 调用复制并粘贴了它。
谁能告诉我我在这里缺少什么?
节点版本 0.12 在 DNS 绑定上不支持 IPv6,并且由于 request
使用它,它也不会工作。
根据 this thread,计划在 v0.13 中实施。
更新
截至 2015 年,这似乎已在主要 nodejs/node 项目(Node.js 和 io.js 的重新合并)中实现。
http = require('http');
server = http.createServer();
server.listen(9000, '::');
我编写了一个程序来执行我的团队正在开发的嵌入式设备的 REST API。发出 https 请求的代码如下所示:
var options = {
hostname: hostAddress,
port: hostPort,
path: path,
method: methodName,
headers: {
"Content-Type": "application/json",
"Content-Length": post_data.length
}
};
// Request and callback
var request = https.request(
options,
function onResponse( response ) {
// response code happens in here ...
}
);
当 hostAddress
是 IPv4 地址时,此代码工作正常,例如“192.168.1.13”。但是我们最近在嵌入式设备上添加了 IPv6 支持,这也需要进行测试。但是,当 hostAddress
是 IPv6 地址时,上面的相同代码 不 起作用。
https.request() [此处:https://nodejs.org/api/https.html] 的文档没有提及 IPv6。我已尝试对 hostAddress
使用以下每个值,但没有成功。
hostAddress = "fe80::9eb6:54ff:fe90:8b70%eth0";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70%eth0]";
hostAddress = "fe80::9eb6:54ff:fe90:8b70";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70]";
我知道 IPv6 地址是正确的 -- 我从嵌入式系统主机上的 ifconfig 调用复制并粘贴了它。
谁能告诉我我在这里缺少什么?
节点版本 0.12 在 DNS 绑定上不支持 IPv6,并且由于 request
使用它,它也不会工作。
根据 this thread,计划在 v0.13 中实施。
更新
截至 2015 年,这似乎已在主要 nodejs/node 项目(Node.js 和 io.js 的重新合并)中实现。
http = require('http');
server = http.createServer();
server.listen(9000, '::');