如何在node.js中获取关于客户端的信息

在这个非常简单的例子中:

var sys = require("sys"), http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello World!"); }).listen(8080); sys.puts("Server running at http://localhost:8080/"); 

1.)我可以从客户那里得到什么样的信息? 像浏览器,屏幕分辨率等?

2.)我怎样才能从客户端发送信息到服务器,如参数?

谢谢!

您无法获得屏幕分辨率信息,但是您可以从请求标题“User-Agent”中获取用户代理

1)引用URL,IP地址,用户代理,屏幕大小和其他统计 。 你也可以得到地理位置,但更多的参与。

2)头文件中有一些数据可用,因此每个请求都会发送这些数据 – 其他数据(如屏幕大小)有点棘手,因此您需要发送一个ajax请求来发送这些数据。

 // 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(); } 

你有没有读过API文档 ? req对象是一个http.ServerRequest对象。 这是HTTP,而像parsing这样的东西不是协议的一部分。 你可以得到的是一个用户代理,从那里你可能能够使用另一个服务检索更多的信息。

请记住,node.js是一个独立的应用程序 – 它不在浏览器中运行 – 它是一个运行在JS解释器中的HTTP Server应用程序。