8 votes

Obtenir le nom d'hôte du client en Node.js

Est-il possible d'obtenir nom d'hôte dans Node.js ?

C'est comme ça que j'obtiens l'IP du client :

var ip = request.header('x-forwarded-for');

Alors, comment puis-je obtenir le nom d'hôte du client ?

var hostname = request.header('???');

Merci pour la réponse !

16voto

Prestaul Points 31986

Vous pouvez utiliser le module 'dns' pour effectuer une recherche inversée de noms de domaine :

require('dns').reverse('12.12.12.12', function(err, domains) {
    if(err) {
        console.log(err.toString());
        return;
    }
    console.log(domains);
});

Voir : http://nodejs.org/docs/v0.3.1/api/all.html#dns.reverse

14voto

peleteiro Points 140

Je pense que cela pourrait vous aider. Ce n'est pas exactement le nom d'hôte du client mais l'adresse IP.

function getClientAddress(req) {
  return req.headers['x-forwarded-for'] || req.connection.remoteAddress;
}

6voto

robertc Points 35382

Je pense que la seule façon de le faire est la suivante :

<form method="post" action="/gethostname">
    <label for="hostname">What is your hostname?</label>
    <input type="text" name="hostname" id="hostname">
</form>

Mais je pense que vous n'en avez pas vraiment besoin, ce n'est pas comme si vous pouviez faire quelque chose d'utile avec ces informations. Si vous voulez simplement une chaîne pour identifier la machine de l'utilisateur, vous pouvez inventer quelque chose.

Si ce que vous recherchez vraiment est le FQDN, alors je pense que ce n'est pas encore très utile pour vous, mais pour cela vous avez besoin de Recherche de DNS inversé . Si vous êtes sur un VPS ou un système similaire, vous pouvez probablement configurer votre boîte pour qu'elle le fasse pour vous, mais notez que cela prendra probablement quelques secondes et que ce n'est pas une bonne idée de le faire dans le cadre d'une réponse. Notez également que, dans la plupart des cas, vous n'obtiendrez pas le FQDN de la machine de l'utilisateur, mais celui de son routeur.

0voto

Kirill Points 158

Vous pouvez également réaliser la même chose si vous utilisez socket.io de la manière suivante :

// Setup an example server
var server = require('socket.io').listen(8080);

// On established connection
server.sockets.on('connection', function (socket) {

    // Get server host
    var host = socket.handshake.headers.host;

    // Remove port number together with colon
    host = host.replace(/:.*$/,"");

    // To test it, output to console
    console.log(host);
});

-1voto

Yadheendran Points 676

Si vous utilisez express,

alors vous pouvez faire comme suit,

var express = require("express"); 
var app = express.createServer();
app.listen(8080);

app.get("/", function (req, res){
    console.log("REQ:: "+req.headers.host);
    res.end(req.headers.host);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X