বিশেষত নোডের জন্য, ইভেন্ট সংযোগের অধীনে http সার্ভার উপাদানটির ডকুমেন্টেশন বলে:
[ট্রিগারড] যখন নতুন টিসিপি স্ট্রিম প্রতিষ্ঠিত হয়। [সকেট] টাইপ নেট.সকেটের একটি অবজেক্ট। সাধারণত ব্যবহারকারীরা এই ইভেন্টটি অ্যাক্সেস করতে চান না। প্রোটোকল পার্সার কীভাবে সকেটে সংযুক্ত করে সে কারণে বিশেষত, সকেটটি পঠনযোগ্য ইভেন্টগুলি ছড়াবে না। সকেটেও অ্যাক্সেস করা যায় request.connection
।
সুতরাং, তার মানে request.connection
একটি সকেট এবং ডকুমেন্টেশন অনুযায়ী সেখানে প্রকৃতপক্ষে একটি হল socket.remoteAddress অ্যাট্রিবিউট যা অনুযায়ী ডকুমেন্টেশন হল:
দূরবর্তী আইপি ঠিকানার স্ট্রিং প্রতিনিধিত্ব। উদাহরণস্বরূপ, '74 .125.127.100 'বা' 2001: 4860: a005 :: 68 '।
এক্সপ্রেসের অধীনে, অনুরোধ অবজেক্টটি নোড http অনুরোধের বস্তুরও একটি উদাহরণ, তাই এই পদ্ধতির এখনও কাজ করা উচিত।
তবে, এক্সপ্রেস.জেএস এর অধীনে অনুরোধটির ইতিমধ্যে দুটি বৈশিষ্ট্য রয়েছে: রেকিআইপি এবং রেকিআইপিএস
req.ip
দূরবর্তী ঠিকানাটি ফেরত দিন, বা যখন "বিশ্বাসের প্রক্সি" সক্ষম করা হবে - প্রবাহের ঠিকানা।
req.ips
যখন "বিশ্বাস প্রক্সি" হয় true
, "এক্স-ফরওয়ার্ড-ফর" আইপি ঠিকানার তালিকা পার্স করে একটি অ্যারে ফিরিয়ে দিন, অন্যথায় একটি ফাঁকা অ্যারে ফিরে আসে। উদাহরণস্বরূপ মানটি যদি "ক্লায়েন্ট, প্রক্সি 1, প্রক্সি 2" হয় তবে আপনি অ্যারে ["ক্লায়েন্ট", "প্রক্সি 1", "প্রক্সি 2"] পাবেন যেখানে "প্রক্সি 2" সবচেয়ে দূরে ডাউন স্ট্রিম।
এটা তোলে কহতব্য যে, আমার বোঝার অনুযায়ী, এক্সপ্রেস হতে পারে req.ip
চেয়ে ভাল পন্থা req.connection.remoteAddress
সাল থেকে req.ip
(প্রদত্ত যেটা বিশ্বস্ত প্রক্সি এক্সপ্রেসে সক্ষম হয়) প্রকৃত ক্লায়েন্ট IP রয়েছে, যেহেতু অন্যান্য প্রক্সি IP ঠিকানার থাকতে পারে (যদি থাকে এক).
এই কারণেই বর্তমানে গৃহীত উত্তরগুলি পরামর্শ দেয়:
var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress;
req.headers['x-forwarded-for']
দ্রুতগামী সমতুল্য হতে হবে req.ip
।