Dans cet exemple très simple: 1.) Quel type d'information puis-je obtenir du client? Comme le navigateur, la résolution de l'écran, etc. p> 2.) Comment puis-je envoyer des informations du client au serveur, comme paramètre? p> Merci! P> P>
3 Réponses :
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. P>
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. P>
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" p>
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 .
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();
}
Pour référrer code>, 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"] code>.
@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") code> (qui est un alias pour req.get (" référent ") code> qui gère effectivement les deux référenant code> et et et et référent code>. Toutefois, dans votre réponse, vous accédez à la propriété de la demande en-têtes code> directement, req.headers ["référent"] code>, qui donne un index non défini code>. ;-)
En effet! Merci d'avoir attrapé ça. J'ai mis à jour la réponse pour utiliser la fonction d'assistance.