node.js使用临时/ etc/hosts设置发送http请求
问题描述:
/etc/hosts
文件允许我们指定域的IP地址。node.js使用临时/ etc/hosts设置发送http请求
例如,如果/etc/hosts
文件的内容是这样的:
127.0.0.1 www.mydomain.com
这意味着www.mydomain.com
代表127.0.0.1
,当你在浏览器地址栏中键入www.mydomain.com
。
当发送请求http.get()
而不修改/etc/hosts
时是否可以指定一个IP地址域?
我在一个公共ubuntu机器上工作,很多人可以访问/etc/hosts
文件。所以最好不要修改/etc/hosts
。
答
您可能需要使用自己的http.Agent
或createConnection()
。例如:
function customLookup(hostname, options, callback) {
if (typeof options === 'function') {
callback = options;
options = null;
}
// TODO: check `options` for options like `all` and `family`
if (hostname.toLowerCase() === 'www.mydomain.com')
return callback(null, '127.0.0.1');
return dns.lookup(hostname, options, callback);
}
function createConnection(opts) {
opts.lookup = customLookup;
return net.createConnection(opts);
}
http.get({
// ...
createConnection
});