Jes*_*sse 154 hostname node.js express
所以,我可能在这里遗漏了一些简单的东西,但我似乎无法找到一种方法来获取我要发送响应的请求对象的主机名.
是否有可能从node.js中找出用户当前访问的主机名?
ste*_*bez 267
你可以使用os模块:
var os = require("os");
os.hostname();
Run Code Online (Sandbox Code Playgroud)
请参见http://nodejs.org/docs/latest/api/os.html#os_os_hostname
注意事项:
如果你可以使用IP地址 - 机器可能有几个网卡,除非你指定它,节点将监听所有这些,所以你不知道请求进入哪个网卡.
主机名是DNS问题 - 不要忘记多个DNS别名可以指向同一台计算机.
cjo*_*ohn 176
如果您正在谈论HTTP请求,可以在以下位置找到请求主机:
request.headers.host
Run Code Online (Sandbox Code Playgroud)
但这取决于传入的请求.
更多信息,请访问http://nodejs.org/docs/v0.4.12/api/http.html#http.ServerRequest
如果您正在寻找机器/本机信息,请尝试过程对象.
Edd*_*die 12
这是另一种选择
req.hostname
Run Code Online (Sandbox Code Playgroud)
在Express Docs中阅读它.
小智 7
如果您需要完全限定的域名且没有HTTP请求,则可以在Linux上使用:
var child_process = require("child_process");
child_process.exec("hostname -f", function(err, stdout, stderr) {
var hostname = stdout.trim();
});
Run Code Online (Sandbox Code Playgroud)
首先,在提供答案之前,我想提前了解一下这样一个事实:通过信任标题,您正在打开网络钓鱼等安全漏洞的大门.因此,对于重定向目的,如果没有首先验证URL是否经过授权,请不要使用标头中的值.
然后,您的操作系统主机名可能不一定与DNS匹配.实际上,一个IP可能有多个DNS名称.因此,对于HTTP目的,无法保证在操作系统配置中分配给您的计算机的主机名是可用的.
我能想到的最佳选择是获取HTTP侦听器公共IP并通过DNS解析其名称.有关dns.reverse详细信息,请参阅方法.但是,再次注意,IP可能有多个与之关联的名称.