我仍在学习 Node JS 和 JavaScript 并且有一个应用程序。我有一个配置文件,需要获取 Ubuntu 12.04 服务器的主机名。
我尝试了以下内容:
window.location.hostname
但是那并没有起作用。以下是示例代码:
exports.config = {
app_name : [ window.location.hostname ]
}
如果我使用字符串,它会加载得很好,但这将通过 Github 进行管理,并且在应用程序加载时需要区分。我仍在学习 Node JS 和 JavaScript 并且有一个应用程序。我有一个配置文件,需要获取 Ubuntu 12.04 服务器的主机名。
我尝试了以下内容:
window.location.hostname
但是那并没有起作用。以下是示例代码:
exports.config = {
app_name : [ window.location.hostname ]
}
如果我使用字符串,它会加载得很好,但这将通过 Github 进行管理,并且在应用程序加载时需要区分。hostname()
函数:var os = require("os");
var hostname = os.hostname();
然而,那只是主机名 - 不带域名(FQDN)。没有简单的方法来获取FQDN。您可以使用node.js DNS函数尝试将服务器的IP地址(使用os.networkInterfaces()
获取,参见上面的文档链接)转换为名称。唯一的问题是服务器可能具有不同的接口和名称,因此您必须决定要使用哪个。
您尝试使用window
对象,但这仅存在于浏览器的JavaScript运行时环境中。显然,服务器端JavaScript没有窗口,因此没有window
对象。请参阅此问题:“Node.js是否有与浏览器中的window对象等效的对象”。
有了这些信息,您的问题有点奇怪 - 在浏览器中,window.location.hostname
是当前页面加载的URL的主机部分。如何将其转换为服务器上下文?您在node.js上运行的代码就是从该服务器上运行的定义,因此实际上您不需要此信息。您可能需要它在浏览器中,因为该信息是可变的,特别是当您运行混搭(来自各种来源的JS代码)时,您的代码可能不知道加载页面的位置。在服务器上,您始终知道它是在本地文件系统中。
顺便说一下,您始终可以使用localhost
作为主机名:)
os.hostname()
,你会得到主机名,就像使用命令行命令 hostname
一样。如果你需要在 HTTP 连接中获取远程主机,那么你的问题已经被合理地标记为“重复”,而你所有的“主机名”相关内容都是完全错误的!基本上,在同一个句子中,你所说的是你需要本地主机名,而不是远程主机名。下定决心吧 :) - user3062321os.hostname()
查找主机名。如果这不是你想要的,你应该考虑将问题呈现给其他人,这就是这个唯一答案的原因。如果“重复”内容的引用也没有帮助到你,那么你应该问自己一个问题:*(我留下这个问题)* 对我来说,我没有其他可添加的内容,所以不需要回复。 - user3062321os.hostname()
返回的操作系统主机名与 HTTP 请求中的主机名部分完全无关。 - Vince只有当你使用http.createServer运行服务器时,才能获取与window.location.hostname
相同的主机名。在这种情况下,主机名是请求对象的属性之一:
request.headers.host
我很想为这个回答承担责任,但我只是因为不知道答案才来到这里。我在这个SO答案中找到了答案。
Vince的答案是错误的。 request.headers.host 是客户端在 Host 标头中传递的值。
除非服务器配置了基于名称的虚拟主机,否则可以将其设置为类似完全限定域名的任何内容。在 Node 中,您可以将其设置为任何您想要的内容或甚至省略它。