有没有办法为节点js https请求设置源端口?

时间:2016-04-11 16:50:13

标签: javascript node.js

有没有办法为节点js https请求设置源端口?我不是询问目的地,而是询问源,即用于发送请求的端口。

上下文是我试图从特定端口而不是随机端口发送https请求,从而允许锁定iptables。节点未以root身份运行,因此端口不是443。

更新: 似乎Node中存在一个错误。选项localAddress和localPort不起作用,至少使用TLS套接字。

更新: 从去年发现了一个类似的问题。答案是“不要那样做”,这似乎是愚蠢的,因为该节点被认为是一个通用工具。 Nodejs TCP connection client port assignment

2 个答案:

答案 0 :(得分:2)

该功能似乎没有记录,但您可以通过为https.request中的options参数设置localAddresslocalPort参数来实现此目的。

有关详细信息,请参阅此处的代码: 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人员考虑这一变化。