var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
(req.connection.socket ? req.connection.socket.remoteAddress : null);
ध्यान दें कि कभी-कभी आप एक से अधिक आईपी एड्रेस प्राप्त कर सकते हैं req.headers['x-forwarded-for']
। इसके अलावा, एक x-forwarded-for
हेडर हमेशा सेट नहीं किया जाएगा जो एक त्रुटि फेंक सकता है।
क्षेत्र का सामान्य प्रारूप है:
एक्स-अग्रेषित-के लिए: client, proxy1, proxy2, proxy3
जहाँ मान IP पते की अल्पविराम + स्पेस से अलग की गई सूची है, जहाँ सबसे मूल ग्राहक है, और प्रत्येक क्रमिक प्रॉक्सी जिसने IP पता जोड़ते हुए अनुरोध पारित किया है जहाँ से उसे अनुरोध प्राप्त हुआ है। इस उदाहरण में, अनुरोध के माध्यम से पारित proxy1
, proxy2
, और फिर proxy3
। proxy3
अनुरोध के दूरस्थ पते के रूप में प्रकट होता है।
यह समाधान है जो अर्नव गुप्ता द्वारा तय किए गए मार्टिन ने मामलों के लिए टिप्पणियों में नीचे सुझाया है जब x-forwarded-for
सेट नहीं किया गया है:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
req.ip
स्रोत का उपयोग कर सकते हैं - expressjs.com/en/api.html#req.ip