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

osc*_*arm 8 javascript real-time 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/");
Run Code Online (Sandbox Code Playgroud)

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

2.)如何从客户端向服务器发送信息,如参数?

谢谢!

cyb*_*bat 19

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();
}
Run Code Online (Sandbox Code Playgroud)


NG.*_*NG. 6

您是否阅读过API文档?req对象是一个http.ServerRequest对象,如此处所述.它是HTTP,而像解决方案这样的东西不是协议的一部分.您可以获得的是用户代理,从那里您可以使用其他服务检索更多信息.

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


小智 6

您无法获取屏幕分辨率信息,但可以从"请求标头""用户代理"中获取用户代理

  • @zzaman尝试req.headers ['user-agent'] - 节点中的所有头文件[都是小写](http://nodejs.org/docs/latest/api/http.html#http_request_headers). (12认同)