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-for
tajuk 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
, proxy2
dan kemudian proxy3
. proxy3
muncul 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-for
tidak disetel:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ip
source - expressjs.com/en/api.html#req.ip