有没有办法为节点js https请求设置源端口?我不是询问目的地,而是询问源,即用于发送请求的端口。
上下文是我试图从特定端口而不是随机端口发送https请求,从而允许锁定iptables。节点未以root身份运行,因此端口不是443。
更新: 似乎Node中存在一个错误。选项localAddress和localPort不起作用,至少使用TLS套接字。
更新: 从去年发现了一个类似的问题。答案是“不要那样做”,这似乎是愚蠢的,因为该节点被认为是一个通用工具。 Nodejs TCP connection client port assignment
答案 0 :(得分:2)
该功能似乎没有记录,但您可以通过为https.request中的options参数设置localAddress
和localPort
参数来实现此目的。
有关详细信息,请参阅此处的代码: https://github.com/nodejs/node/blob/b85a50b6da5bbd7e9c8902a13dfbe1a142fd786a/lib/net.js#L916
基本的例子如下:
var https = require('https');
var options = {
hostname: 'example.com',
port: 8443,
localAddress : '192.168.0.1',
localPort: 8444
};
var req = https.request(options, function(res) {
console.log(res);
});
req.end();
答案 1 :(得分:0)
不幸的是,看起来Node不支持绑定客户端端口。显然,这不是一个使用很多的功能,但它是可能的。此链接相当好地解释了端口绑定。 https://blog.cloudflare.com/cloudflare-now-supports-websockets/不确定如何让nodejs人员考虑这一变化。