Express.js – 獲取遠端客戶端地址


應用程式需要維護遠端客戶端地址,以管理計算機系統的請求數量並跟蹤其使用情況。但有時,伺服器在 NGINX 伺服器後面執行,因此我們需要檢查其轉發請求。為此,我們可以使用“x-forwarded-for”

語法

req.headers['x-forwarded-for'] || req.socket.remoteAddress

如果此代理不屬於您,則在使用x-forwarded-for標頭時應小心,因為它可能會被欺騙。

示例 1

建立一個名為“remoteAddress.js”的檔案並複製以下程式碼段。建立檔案後,使用命令“node remoteAddress.js”執行此程式碼,如下例所示 −

// req.query() Demo Example

// Importing the express module
var express = require('express');

// Initializing the express and port number
var app = express();
var PORT = 3000;

// Getting the request query string
app.get('/api', function(req, res){
   console.log('id: ' + req.query.id)
   res.send('id: ' + req.query.id);
});

// Listening to the port
app.listen(PORT, function(err){
   if (err) console.log(err);
   console.log("Server listening on PORT", PORT);
});

在以下端點發出 Get 請求 - https://:3000/

輸出

C:\home
ode>> node remoteAddress.js Server listening on PORT 3000 IP Address: ::ffff:127.0.0.1

示例 2

我們來看另一個示例。

// express.raw() Demo Example

// Importing the express module
var express = require('express');

// Initializing the express and port number
var app = express();
var PORT = 3000;

app.get('/api*', function (req, res){
   var ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress
   console.log('IP Address: ' + ip)
});

// Listening to the port
app.listen(PORT, function(err){
   if (err) console.log(err);
   console.log("Server listening on PORT", PORT);
});

app.get('/', function (req, res){
   var forwardedIpsStr = req.header('x-forwarded-for');
   var IP = '';

   if (forwardedIpsStr) {
      IP = forwardedIps = forwardedIpsStr.split(',')[0];
   }
});

對以下任何端點發出 Get 請求 –

https://:3000/api
https://:3000/api/v2
https://:3000/api/v3 and so on...

它會將所有端點與/api進行比較並跟蹤它。

輸出

C:\home
ode>> node remoteAddress.js Server listening on PORT 3000 IP Address: ::ffff:127.0.0.1 IP Address: ::ffff:127.0.0.1 IP Address: ::ffff:127.0.0.1

Updated on: 2022-03-28

168 次瀏覽

開啟你的 職業

透過完成課程獲得認證

開始
廣告