node.js使用临时/ etc/hosts设置发送http请求

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

options参数不支持此功能。我不想使用hostile,因为它改变/etc/hosts

您可能需要使用自己的http.AgentcreateConnection()。例如:

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 
});