代码之家  ›  专栏  ›  技术社区  ›  Sterling Butters

Node.js express:将req.ip存储到变量

  •  0
  • Sterling Butters  · 技术社区  · 7 年前

    我有下面的代码,在其中我可以打印外部ip和端口的连接客户端到我的http服务器。是否可以将ip和端口存储到变量?全局声明一个变量并在其中修改它 app.use(...) 似乎不起作用。

    var port = 3000;
    
    var express = require('express');
    var app = express();
    var http = require('http').Server(app);
    
    app.use(function (req, res, next) {
        console.log(req.ip);
        console.log(req.hostname);
        console.log(req.connection.remotePort);
        next();
    });
    
    app.use(express.static(__dirname + '/'));
    
    http.listen(port, function(){
      console.log(`Listening on http://127.0.0.1:${port}`);
    });
    
    var openURL = require('opn');
    console.log("Opening Server URL")
    openURL(`http://127.0.0.1:${port}`);
    

    2 回复  |  直到 7 年前
        1
  •  2
  •   ns_helloworld    7 年前

    我的声誉太低,所以我不能评论不幸的是,但我看不到你的代码中,你试图存储客户端的IP地址,端口全球?

    我只是在本地测试了一下,效果很好:

    var port = 3000
    var express = require('express')
    var app = express()
    var http = require('http').Server(app)
    var clientIP = null
    var clientPORT = null
    
    app.use(function (req, res, next) {
        clientIP = req.ip
        clientPORT = req.connection.remotePort
        console.log(req.ip)
        console.log(req.connection.remotePort)
        next()
    })
    
    http.listen(port, function() {
        console.log('listening')
    })
    
    setInterval(function() {
        console.log(clientIP)
        console.log(clientPORT)
    }, 1000)
    

    我设置了一个间隔,这样我们就可以看到变量是否真的被更新了。最初,每当interval函数运行时,它都输出null。但在我提出请求之后localhost:3000 it 记录我的ip和端口,然后打印出来。

        2
  •  1
  •   joshbang    7 年前

    在http变量下可以声明变量

    var http = require('http').Server(app);
    var currentIP; // you can use "let" if you are using es6
    

    然后可以在函数内部执行以下操作,将变量设置为req.ip。

    currentIP = req.ip;
    
    推荐文章