首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >节点JS返回主机名

节点JS返回主机名
EN

Stack Overflow用户
提问于 2013-12-13 04:27:17
回答 2查看 103.9K关注 0票数 63

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

我试过这样的方法:

代码语言:javascript
复制
 window.location.hostname

但这并不管用。示例代码如下:

代码语言:javascript
复制
exports.config = {
    app_name : [ window.location.hostname ]
}

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

EN

回答 2

Stack Overflow用户

发布于 2013-12-13 05:04:34

根据to the node.js documentation for the "os" module,你需要加载"os“模块,它有一个hostname()函数:

代码语言:javascript
复制
var os = require("os");
var hostname = os.hostname();

但是,这只是主机名-不包括域名( FQDN)。没有简单的方法来获取FQDN。您可以使用the node.js DNS functions尝试将服务器的IP地址(使用os.networkInterfaces()获得,请参阅上面的文档链接)转换为名称。唯一的问题是服务器可能有不同的接口和名称,所以你必须决定你想要哪一个。

您尝试使用window对象,但该对象只存在于浏览器的JavaScript运行时环境中。显然,服务器端JavaScript没有windows,所以没有window对象。See this question: "Does node.js have equivalent to window object in browser"

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

顺便说一下,您可以始终使用localhost作为主机名:)

票数 130
EN

Stack Overflow用户

发布于 2018-03-24 07:15:46

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

代码语言:javascript
复制
request.headers.host

我很想把这个答案归功于我,但我在这里只是因为我不知道答案。我在at this SO answer上找到了答案。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20553554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档