我还在学习Node JS和javascript,并且有一个应用程序。我有一个配置文件,需要在其中获取Ubuntu 12.04上服务器的主机名
我试过这样的方法:
window.location.hostname
但这并不管用。示例代码如下:
exports.config = {
app_name : [ window.location.hostname ]
}
如果我使用一个字符串,它将正常加载,但这将通过Github进行管理,并且需要在应用程序加载时进行区分。
发布于 2013-12-13 05:04:34
根据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没有windows,所以没有window
对象。See this question: "Does node.js have equivalent to window object in browser"。
有了这些信息,您的问题就有点奇怪了--在浏览器中,window.location.hostname
是加载当前页面的URL的主机部分。如何将其转换为服务器上下文?根据定义,您在node.js上运行的代码来自该服务器,因此您实际上并不需要此信息。您(可能)需要在浏览器中使用它,因为这些信息是可变的,特别是当您运行mashup(来自各种来源的JS代码)时,您的代码可能不知道它运行的页面是从哪里加载的。在服务器上,你总是知道它是你的本地文件系统。
顺便说一下,您可以始终使用localhost
作为主机名:)
发布于 2018-03-24 07:15:46
如果您正在使用http.createServer运行服务器,则只能从window.location.hostname
获得相同的主机名。在这种情况下,主机名是请求对象的属性之一:
request.headers.host
我很想把这个答案归功于我,但我在这里只是因为我不知道答案。我在at this SO answer上找到了答案。
https://stackoverflow.com/questions/20553554
复制相似问题