在Node.js中获取客户端主机名

是否有可能在Node.js中获取主机名

这是我如何获得客户的IP:

var ip = request.header('x-forwarded-for'); 

那么,如何获取客户端的主机名呢?

 var hostname = request.header('???'); 

感谢您的回复!

我认为你能做到的唯一方法就是这样:

 <form method="post" action="/gethostname"> <label for="hostname">What is your hostname?</label> <input type="text" name="hostname" id="hostname"> </form> 

但是我build议你不需要它,这不像你可以做任何有用的信息。 如果你只是想要一个string来识别用户的机器,那么你可以做一些事情。

如果你真的以后是FQDN,那么我会build议它对你没有什么用处,但是为此你需要反向DNS查询 。 如果你使用的是VPS或类似的软件,你可以configuration你的盒子来为你做这个,但是请注意,这可能需要几秒钟的时间,因此作为响应的一部分不是一个好主意。 另外请注意,在大多数情况下,您将不会获得用户计算机的FQDN,而是路由器的FQDN。

我想这可能会帮助你。 这不完全是客户端主机名,而是IP地址。

 function getClientAddress(req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } 

你可以使用'dns'模块做一个反向dns查找:

 require('dns').reverse('12.12.12.12', function(err, domains) { if(err) { console.log(err.toString()); return; } console.log(domains); }); 

请参阅: http : //nodejs.org/docs/v0.3.1/api/all.html#dns.reverse

如果你使用快递,

那么你可以做如下,

 var express = require("express"); var app = express.createServer(); app.listen(8080); app.get("/", function (req, res){ console.log("REQ:: "+req.headers.host); res.end(req.headers.host); }); 

如果您使用以下方式使用socket.io,也可以达到相同的效果:

 // Setup an example server var server = require('socket.io').listen(8080); // On established connection server.sockets.on('connection', function (socket) { // Get server host var host = socket.handshake.headers.host; // Remove port number together with colon host = host.replace(/:.*$/,""); // To test it, output to console console.log(host); });