ความแตกต่างระหว่าง HTTP_X_FORWARDED_FOR และ REMOTE_ADDR ไม่มีตัวแปร HTTP_X_FORWARDED_FOR ใน Request.ServerVariables เพียง REMOTE_ADDR แต่ตัวแปรทั้งสองสามารถรับที่อยู่ IP ของไคลเอ็นต์ได้ แล้วความแตกต่างระหว่างพวกเขาคืออะไร?
ใช้ Request.ServerVariables(REMOTE_ADDR) ใน ASP เพื่อรับที่อยู่ IP ของไคลเอ็นต์ อย่างไรก็ตาม หากไคลเอ็นต์ใช้พร็อกซีเซิร์ฟเวอร์ในการเข้าถึง สิ่งที่ได้รับคือที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์ ไม่ใช่ที่อยู่ IP ของไคลเอ็นต์จริง หากต้องการรับที่อยู่ IP ที่แท้จริงของไคลเอ็นต์ผ่านพร็อกซีเซิร์ฟเวอร์ ให้ใช้ Request.ServerVariables(HTTP_X_FORWARDED_FOR) เพื่ออ่าน
อย่างไรก็ตาม ควรสังเกตว่าไม่ใช่ทุกพร็อกซีเซิร์ฟเวอร์ที่สามารถใช้ Request.ServerVariables(HTTP_X_FORWARDED_FOR) เพื่ออ่าน IP จริงของไคลเอ็นต์ได้ IP บางส่วนที่อ่านด้วยวิธีนี้ยังคงเป็น IP ของพร็อกซีเซิร์ฟเวอร์
สิ่งที่ควรทราบอีกประการหนึ่งก็คือ หากไคลเอ็นต์ไม่เข้าถึงผ่านพร็อกซีเซิร์ฟเวอร์ ค่าที่ได้รับจาก Request.ServerVariables (HTTP_X_FORWARDED_FOR) จะว่างเปล่า ดังนั้น หากคุณต้องการใช้วิธีนี้ในโปรแกรมของคุณ คุณสามารถทำได้ดังนี้:
-
userip = Request.ServerVariables (HTTP_X_FORWARDED_FOR)
ถ้า userip = ดังนั้น userip = Request.ServerVariables(REMOTE_ADDR)
-
นั่นคือ: หากไคลเอนต์ผ่านพร็อกซีเซิร์ฟเวอร์ ค่าของ HTTP_X_FORWARDED_FOR จะถูกนำไปใช้ หากไคลเอนต์ไม่ผ่านพร็อกซีเซิร์ฟเวอร์ ค่าของ REMOTE_ADDR จะถูกนำไปใช้
แน่นอนว่าวิธีการข้างต้นไม่ได้มีอำนาจทุกอย่าง ดังที่กล่าวไว้ในย่อหน้าที่สาม คุณเคยพิจารณาบ้างไหมว่าหากผู้ใช้ใช้พร็อกซีระดับ 2 พร็อกซีระดับ 3 พร็อกซีระดับ 4...