var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket ? req.connection.socket.remoteAddress : null);
Perhatikan bahwa terkadang Anda bisa mendapatkan lebih dari satu alamat IP req.headers['x-forwarded-for']. Selain itu, x-forwarded-fortajuk tidak akan selalu disetel yang dapat menimbulkan kesalahan.
Format umum bidang ini adalah:
x-diteruskan-untuk: client, proxy1, proxy2, proxy3
di mana nilainya adalah daftar alamat IP yang dipisahkan koma + spasi, yang paling kiri adalah klien asli, dan setiap proksi berturut-turut yang lulus permintaan menambahkan alamat IP dari mana ia menerima permintaan. Dalam contoh ini, permintaan melewati proxy1, proxy2dan kemudian proxy3. proxy3muncul sebagai alamat permintaan yang jauh.
Ini adalah solusi yang disarankan oleh Arnav Gupta dengan perbaikan yang disarankan Martin di bawah dalam komentar untuk kasus-kasus ketika x-forwarded-fortidak disetel:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ipsource - expressjs.com/en/api.html#req.ip