الفرق بين 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... .