在这个非常简单的例子中:
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.) 如何从客户端向服务器发送信息,例如参数?
谢谢!
推荐人 URL、IP 地址、用户代理、屏幕尺寸和其他统计信息。 您还可以获取地理位置,但这会涉及更多。
标头中提供了一些数据,因此这些数据会在每次请求时发送 - 其他数据(例如屏幕尺寸)有点棘手,因此您需要发出 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();
}
无法获取屏幕分辨率信息,但可以从请求头“User-Agent”获取用户代理
您阅读过API文档吗? req 对象是一个 http.ServerRequest 对象,如此处所述。它是 HTTP,诸如解析之类的东西不是协议的一部分。您可以获得的是用户代理,从那里您可以使用其他服务检索更多信息。
请记住,node.js 是一个独立的应用程序 - 它不在浏览器中运行 - 它是一个在 JS 解释器中运行的 HTTP 服务器应用程序。