2012-09-24 15 views
7

Ok, por lo que parece bastante fácil en Node.js para obtener el nombre de host de la petición que hizo a mi servidor:nodejs host del servidor

app.get('/', function(req,res){ 
    console.log(req.headers.host); 
}); 

¿Hay una manera fácil de determinar el nombre de host de mi http real ¿servidor? Por ejemplo, mi servidor se está ejecutando en la dirección http://localhost:3000 - ¿Puedo determinar programáticamente esta dirección? Estoy usando expressjs.

Respuesta

12

Sí, puedes usar el;

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app); 

server.listen(3000, function(err) { 
     console.log(err, server.address()); 
}); 

debe imprimir

{ address: '0.0.0.0', family: 'IPv4', port: 3000 } 

también se puede retreive el nombre de host para el sistema operativo mediante el siguiente;

require('os').hostname(); 
+0

Genial, gracias por la respuesta y la ayuda! Si hago "host localhost" en la terminal obtengo la respuesta "localhost tiene la dirección 127.0.0.1", pero server.address() produce "0.0.0.0". ¿Hay alguna razón para la discrepancia? –

+1

No estoy seguro de por qué se resuelve en 0.0.0.0, tuve un problema al tratar de usar el método de dirección() para escuchar un socket tcp encuadernado, ya que Windows generaría un error para la dirección de IP 0.0.0.0, tuve mapear 0.0.0.0 a 127.0.0.1 0.0.0.0 puede ocurrir por muchas razones, puede significar todas las interfaces en una máquina, también puede significar que no hay una IP asociada a una máquina, así como algunas otras cosas como bueno de la breve investigación que he hecho sobre él. –

+1

'localhost' para mí viene como' {dirección: '::', familia: 'IPv6', puerto: 5000} '. – ptf

Cuestiones relacionadas