var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket ? req.connection.socket.remoteAddress : null);
Lưu ý rằng đôi khi bạn có thể nhận được nhiều hơn một địa chỉ IP req.headers['x-forwarded-for']. Ngoài ra, một x-forwarded-fortiêu đề sẽ không luôn luôn được đặt mà có thể gây ra lỗi.
Định dạng chung của trường là:
x-chuyển tiếp-cho: client, proxy1, proxy2, proxy3
trong đó giá trị là danh sách địa chỉ IP được phân tách bằng dấu phẩy + không gian, phần lớn bên trái là máy khách gốc và mỗi proxy liên tiếp chuyển yêu cầu thêm địa chỉ IP nơi nhận được yêu cầu. Trong ví dụ này, yêu cầu đi qua proxy1, proxy2và sau đó proxy3. proxy3xuất hiện dưới dạng địa chỉ từ xa của yêu cầu.
Đây là giải pháp được đề xuất bởi Arnav Gupta với bản sửa lỗi Martin đã đề xuất bên dưới trong các nhận xét cho các trường hợp khi x-forwarded-forkhông được đặt:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ipnguồn - expressjs.com/en/api.html#req.ip