因此,我可能在这里遗漏了一些简单的东西,但我似乎找不到一种方法来获取我正在向其发送响应的请求对象所请求的主机名。

是否有可能找出用户当前从node.js访问的主机名?


当前回答

如果你在谈论一个HTTP请求,你可以在下面找到请求主机:

request.headers.host

但这依赖于传入请求。

更多信息请访问http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest

如果您正在寻找机器/本机信息,请尝试process对象。

其他回答

这是备选方案

req.hostname

在《快速文档》上读到。

如果你需要一个完全限定的域名,并且没有HTTP请求,在Linux上,你可以使用:

var child_process = require("child_process");

child_process.exec("hostname -f", function(err, stdout, stderr) {
  var hostname = stdout.trim();
});

你可以使用os Module:

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

看到http://nodejs.org/docs/latest/api/os.html os_os_hostname

警告:

如果你能用IP地址 机器可能有几个网卡,除非你指定了它,否则节点会监听所有的网卡,所以你不知道请求是在哪个网卡上传入的。 主机名是DNS的问题 不要忘记,多个DNS别名可以指向同一台机器。

要么从前端头文件中传递并获取它,要么简单地将它放在。env中,其中。env文件被.gitignore忽略,因此对于每个服务器环境,您将拥有不同的.env,其中包含该服务器的主机字符串

.env代码

HOSTNAME=example.com

文件你想要的hotname。

const dotenv = require("dotenv");
dotenv.config();

console.log('hostname: '+process.env.HOSTNAME)

输出:

hostname: example.com

我认为你想要的是识别跨源请求,你应该使用Origin头文件。

const origin = req.get('origin');

使用这个你可以得到一个请求客户端URL