好的,那么在Node.js中似乎很容易获取发送请求的主机名:
app.get('/', function(req,res){
console.log(req.headers.host);
});
有没有简单的方法来确定我的实际http服务器的主机名?例如,我的服务器正在地址 http://localhost:3000
上运行 - 我可以编程方式确定这个地址吗?我正在使用expressjs。
是的,你可以使用以下方式:
var express = require('express'),
app = express(),
server = require('http').createServer(app);
server.listen(3000, function(err) {
console.log(err, server.address());
});
应该打印。{ address: '0.0.0.0', family: 'IPv4', port: 3000 }
你也可以通过以下方式获取操作系统的主机名:
require('os').hostname();
{ address: '::', family: 'IPv6', port: 5000 }
。 - ptf0.0.0.0
,这是“侦听每个可用地址”的IPv4版本。 因此,服务器实际上正在侦听机器拥有的每个地址上的该端口。 您可以通过127.0.0.1
连接到它,但它不会报告,因为您还可以通过机器拥有的任何其他IP地址连接到它。 - Jason Kohles