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

问题描述 投票:0回答:3

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

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.) 如何从客户端向服务器发送信息,例如参数?

谢谢!

javascript real-time node.js
3个回答
23
投票
  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.params.width,
          height: req.params.height
        }
      };
      // Store the user in your database
      // User.create(user)...
      res.end();
    }

11
投票

无法获取屏幕分辨率信息,但可以从请求头“User-Agent”获取用户代理


6
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.