【问题标题】:Node JS return hostname节点 JS 返回主机名
【发布时间】:2013-12-31 10:58:53
【问题描述】:

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

我尝试了类似的方法:

 window.location.hostname

但这没有用。示例代码如下:

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

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

【问题讨论】:

标签: javascript node.js hostname


【解决方案1】:

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

request.headers.host

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

    • 我应该澄清一下。我需要这个名称来将数据发送到远程源,并且需要区分它来自哪个服务器。如果您在 linux 中运行命令“主机名”,它将返回服务器名称。我希望将此名称传递到我的配置中,以便在它发送数据时,我可以按运行它的服务器组进行组织。
    • @nocode 你还没有澄清任何事情,因为如果你如上所述使用os.hostname(),你会得到主机名,与命令行命令hostname 相同。如果您需要 HTTP 连接中的远程主机,您的问题已被有效标记为“重复”,并且您所有的“主机名”内容都是完全错误的!基本上,您在 TEH SAME SENTENCE(!!!) 中所说的是您需要本地主机名,而不是远程主机名。下定决心:)
    • 你不懂。该应用程序正在将本地主机名和其他服务器统计信息作为数据发送到远程源。假设我的环境有 10 台服务器。这 10 台服务器将向远程源发送数据,我需要一种方法来定义这 10 台服务器的主机名,以便区分它们。我可以手动写出来,但需要它是自动的。这与从浏览器获取数据无关。
    • 非常好 - 现在继续使用os.hostname() 查找主机名。如果这不是您想要的,您应该考虑向其他人介绍您的问题,这是唯一的答案,如果对“重复”的推荐对您没有帮助,您应该问自己一个问题:(我把这个打开)我自己,我没有其他要补充的,所以没有必要回应。
    • os.hostname() 返回的操作系统的主机名与 HTTP 请求的主机名部分没有任何关系。
    猜你喜欢
    • 1970-01-01
    • 2018-02-22
    • 2014-06-28
    • 1970-01-01
    • 2015-04-25
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多