如果我决定将http模块用于我的服务器,我需要执行以下哪些模块/方法?
感谢。
答案 0 :(得分:19)
当客户端连接到您的HTTP服务器时,会发出“connection
”事件,并且提供给回调的参数是类型为net.Socket
的流,其中包含一个名为“remoteAddress
的属性”。同样,传递给请求侦听器的每个HTTP请求也都有对连接对象的引用:
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello ' + req.connection.remoteAddress + '!');
// Client address in request -----^
});
server.on('connection', function(sock) {
console.log('Client connected from ' + sock.remoteAddress);
// Client address at time of connection ----^
});
server.listen(9797);
对于通过URL中的嵌入式凭据进行身份验证,我认为这种形式在HTTP请求中至少是some web browsers do not pass on the information可靠(至少IE和Chrome)。您最好实施基于HTTP标准的身份验证方案,例如Basic access auth或Digest access auth。
答案 1 :(得分:3)
对于HTTP Basic / Digest身份验证,您可以使用http-auth模块
// Authentication module.
var auth = require('http-auth');
var basic = auth.basic({
realm: "Simon Area.",
file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ...
});
// Creating new HTTP server.
http.createServer(basic, function(req, res) {
res.end("Welcome to private area - " + req.user + "!");
}).listen(1337);
答案 2 :(得分:2)