繁体   English   中英

Node JS返回主机名

[英]Node JS return hostname

我还在学习Node JS和javascript并有一个应用程序。 我有一个配置文件,我需要在Ubuntu 12.04上获取服务器的主机名

我尝试过类似的东西:

 window.location.hostname

但那没用。 示例代码如下:

exports.config = {
    app_name : [ window.location.hostname ]
}

如果我使用一个字符串,它将加载正常,但这将通过Github进行管理,并且需要在应用程序加载时进行区分。

根据“os”模块的node.js文档,您需要加载“os”模块,该模块具有hostname()函数:

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

但是,这只是主机名 - 没有域名(FQDN)。 没有简单的方法来获取FQDN。 您可以使用node.js DNS函数尝试将服务器的IP地址(使用os.networkInterfaces()获取,请参阅上面的doc链接)到名称中。 唯一的问题是服务器可能有不同的接口和名称,因此您必须决定您想要哪一个。

您尝试使用window对象,但仅存在于浏览器的JavaScript运行时环境中。 服务器端JavaScript显然没有window ,因此没有window对象。 看到这个问题:“node.js是否与浏览器中的窗口对象相同”

有了这些信息你的问题有点奇怪 - 在浏览器window.location.hostname是当前页面加载的URL的主机部分。 你如何将其转换为服务器上下文? 根据定义,您在node.js上运行的代码来自该服务器,因此您实际上并不需要此信息。 您(可能)在浏览器中需要它,因为该信息是可变的,尤其是当您运行mashup(来自各种源的JS代码)时,您的代码可能无法知道它运行的页面从何处加载。 在服务器上,您始终知道它是您的本地文件系统。

顺便说一下,你总是可以使用localhost作为主机名:)

如果您正在运行带有http.createServer的服务器,则只能window.location.hostname获取相同的主机名。 在这种情况下,主机名是请求对象的属性之一:

request.headers.host

我很乐意接受这个答案,但我只是因为我不知道答案。 在这个答案中找到了答案

您可以使用

console.log(process.env.host);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM