11
votes

Comment obtenir des informations sur le client dans Node.js

Dans cet exemple très simple: xxx

1.) Quel type d'information puis-je obtenir du client? Comme le navigateur, la résolution de l'écran, etc.

2.) Comment puis-je envoyer des informations du client au serveur, comme paramètre?

Merci!


0 commentaires

3 Réponses :


6
votes

Avez-vous lu le API Docs ? L'objet Req est un objet http.Serverrequest comme documenté là-bas. Il est http, et de telles choses comme la résolution ne font pas partie du protocole. Ce que vous pouvez obtenir est un agent utilisateur et de là, vous pourrez peut-être récupérer plus d'informations en utilisant un autre service.

N'oubliez pas que nœud.js est une application autonome - elle ne fonctionne pas dans un navigateur - c'est une application Server HTTP qui fonctionne dans un interprète JS.


0 commentaires

9
votes

Vous ne pouvez pas obtenir les informations de résolution de l'écran, mais vous pouvez obtenir l'agent utilisateur de la demande de demande "utilisateur-agent"


2 commentaires

Quel est le code nécessaire pour cela? J'ai essayé Req.Getheader ('utilisateur-agent') mais je ne pense pas que cela fonctionne.


@zzaman essayez req.headers ['utilisateur-agent'] - Tous les en-têtes du nœud sont minuscules .



20
votes

1) URL de référent, adresse IP, agent utilisateur, taille de l'écran et autre Statistiques . Vous pouvez également obtenir la localisation géographique mais c'est plus impliqué.

2) Certaines données sont disponibles dans les en-têtes de sorte que celles-ci sont envoyées sur chaque demande - d'autres données telles que la taille de l'écran sont un peu plus difficiles afin que vous souhaitiez faire une Demande Ajax d'envoyer cela. P>

// Somewhere on your page(s) - here we use jQuery
$(document).ready(function(){   
  // Check if they have been logged
  if ($.cookie('logged') == null ){
    // Send screen size and whatever else that is not available from headers
    $.post('/logger', { width: screen.width, height: screen.height }, function(res) {
      // Set cookie  for 30 days so we don't keep doing this
       $.cookie('logged', true, { expires: 30 }); 
    });
  } 
 });  

// Server side - example is an Express controller
exports.logger = function(req, res) {
  var user = {
    agent: req.header('user-agent'(, // User Agent we get from headers
    referrer: req.header('referrer'), //  Likewise for referrer
    ip: req.header('x-forwarded-for') || req.connection.remoteAddress, // Get IP - allow for proxy
    screen: { // Get screen info that we passed in url post data
      width: req.param('width'),
      height: req.param('height')
    }
  };
  // Store the user in your database
  // User.create(user)...
  res.end();
}


5 commentaires

Pour référrer , navigateurs Envoyer Référence < / Code> Avec un seul R. Express ne traduit pas cela à l'orthographe appropriée, les besoins supérieurs à Req.Headers ["référencier"] .


@Arjan ils sont interchangeables. Express peut gérer l'éther un. Github.com/expressjs/express/blob/Master/LIB/ Demande.js # L76


C'est bizarre, comme je l'ai testé avant de poster ce commentaire (et j'ai même ajouté un commentaire dans mon code expliquant Express ne traduisant pas ...). Va vérifier à nouveau demain, mais votre lien ne ment pas ... :-)


Ah, dans votre commentaire, vous vous référez à la fonction (Nice) Helper fonction en-tête ("référent") (qui est un alias pour req.get (" référent ") qui gère effectivement les deux référenant et et et et référent . Toutefois, dans votre réponse, vous accédez à la propriété de la demande en-têtes directement, req.headers ["référent"] , qui donne un index non défini . ;-)


En effet! Merci d'avoir attrapé ça. J'ai mis à jour la réponse pour utiliser la fonction d'assistance.