Node JS返回主机名
Node JS return hostname
我仍在学习NodeJS和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
对象。请参阅以下问题:"node.js在浏览器中是否具有等效的window对象"。
有了这些信息,你的问题就有点奇怪了——在浏览器中,window.location.hostname
是加载当前页面的URL的主机部分。如何将其转换为服务器上下文?根据定义,在node.js上运行的代码正是来自该服务器,因此实际上并不需要这些信息。你(可能)需要在浏览器中使用它,因为这些信息是可变的,尤其是当你运行mashup(来自各种来源的JS代码)时,你的代码可能不知道它运行的页面是从哪里加载的。在服务器上,您总是知道它是您的本地文件系统。
顺便说一下,您可以始终使用localhost
作为主机名:)
如果使用http.createServer运行服务器,则只能获得与window.location.hostname
相同的主机名。在这种情况下,主机名是请求对象的属性之一:
request.headers.host
我很想为这个答案感到自豪,但我来这里只是因为我不知道答案。我在这个SO答案中找到了答案。
Vince的回答是错误的。request.headers.host是客户端在主机标头中传递的值。
除非服务器配置了基于名称的虚拟主机,否则可以将其设置为任何看起来像fqdn的内容。在node中,您可以将它设置为您想要的任何内容,甚至可以完全省略它。
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- chrome扩展更改主机/域警告
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- Node JS返回主机名
- 给定子域中的cookie,您可以编写一个返回代理服务器主机名的javascript函数吗
- 返回错误;不工作在Firefox在远程主机,但工作在本地主机
- getTimezoneOffset()方法在本地主机和服务器上返回不同的时间