节点HTTPparsing
所以你可以像这样做一个节点的HTTP GET请求:
var http = require('http'); var options = { host: 'stackoverflow.com', }; var req = http.get(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); }); req.on('error', function(e) { console.log('ERROR: ' + e.message); });
我想看看http.get
将要使用哪个IP地址? 如果给定的DNSparsing为多个IP,节点HTTP lib如何确定使用哪个IP地址?
通过多个IP我的意思是这样的:
dig +short stackoverflow.com 151.101.129.69 151.101.1.69 151.101.193.69 151.101.65.6
节点请求库不同吗?
你的req
对象应该有一个connection
对象,它将有你连接的服务器的远程地址。
req.connection.remoteAddress
当然,你需要等到你真的有一个连接,所以我只需要使用你所需要的connect
事件。 未经testing,但试试这个:
req.on('connect', (res, socket, head) => { console.log(socket.remoteAddress); });
据我所知,在节点6.xx中也是如此:
- http模块使用
- 净模块使用
- dns模块使用
- 本机模块libuv#getaddrinfo ( http://docs.libuv.org/en/v1.x/dns.html#c.uv_getaddrinfo )
具体你的问题使用哪个IP: https : //github.com/nodejs/node/blob/cd439465cc8b408eb88822c7695def611acfaaf7/lib/dns.js#L82
非常简单的algorithm,如:“如果有多个IP地址是第一个”:)