如何在Node.js中获取客户端计算机名称

3

有人能帮我获取客户端机器名/主机名,用于我的网站认证。该网站在公司域内运行。 我尝试了下面的代码,但得到的是服务器主机名而不是客户端主机名。

var os = require("os");
var hostaddress = os.hostname();

我知道一种使用以下代码获取客户端IP地址的方法。
req.connection.remoteAddress

由于IP地址会在互联网连接变化时发生变化,因此我希望能够通过计算机名称进行身份验证。请帮助我获取登录到我的网站的客户端计算机名称。


你获取到客户端计算机名称了吗? - Anil Talla
4个回答

2
NodeJS DNS反向查找可以解决问题。这是唯一的方法。请查看此链接获取更多信息 :)

https://nodejs.org/api/dns.html#dns_dns_reverse_ip_callback

尝试下面的代码。
require('dns').reverse(req.connection.remoteAddress, function(err, domains) {
    console.log(domains);
});

非常感谢。这很有帮助。再次感谢。 - Harry
3
@Yalamanchili,为什么您拒绝了我的回答编辑?您是否至少测试过您的代码?由于 remoteAddress 后面的 ' 导致它不能工作,还是我错了? - Dash

1

要获取客户端系统或任何系统的IP地址,可以这样做。

将req更改为您正在使用的任何命名约定。

var ip = (req.headers["X-Forwarded-For"] || req.headers["x-forwarded-for"] || '').split(',')[0] || req.connection.remoteAddress;
console.log("ip address is:- " + ip);

获取客户端系统或任何系统的主机名,可以这样做:
const os = require('os');
var hostname = os.hostname(); 
console.log("Hostname is:- " + hostname);

这将在js和nodejs上都起作用


os.hostname你将无法获取客户端的主机名,而是服务器的主机名。 - undefined

0

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

  request.headers.host

希望这对你也有用。

没有得到任何输出,结果显示为“未定义”。 - Harry
你能访问这个页面吗?https://dev59.com/81LTa4cB1Zd3GeqPXRtf,希望这能解决你的问题。 - Shekhar Tyagi
FYI:这是用户报告的值,让服务器知道请求的路由位置。它与客户端无关,与服务器主机名关系较小。 - GottZ

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

这会起作用的!!


嗨,我需要获取客户端的主机名,而不是IP地址 :( - Harry
如果您正在使用Express,则可以按照以下方式操作: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); }); - Jaini
@harikrishna 您收到了答复吗? - Jaini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接