كيف تتأكد من أن طلب HTTP محلي عند استخدام httplistener
-
25-09-2019 - |
سؤال
أنا استخدم HttpListener
. ومع ذلك ، أريد فقط معالجة الطلبات التي تأتي محليًا ، وليس من جهاز/خادم آخر.
كيف يمكنني التحقق برنامجياً إذا كان الطلب الوارد محليًا بالتأكيد؟ هل سأحتاج إلى استخدام بعض HttpListenerRequest
أفراد؟
المحلول
تحقق مع RemoteEndPoint
منشأه إذا كان العنوان البعيد للطلب يساوي 127.0.0.1
.
نصائح أخرى
ال HttpListenerRequest
لديه خاصية IsLocal
والتي يجب أن توفر أيضا هذه المعلومات. ومع ذلك ، فهي تعود false
على حاسوبي. التفكير في الكود المصدر ، يبدو أن هذا بسبب IsLocal
تستخدم الخاصية الرمز:
return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
عندما ينبغي أن يستخدم الكود في (لا يمكن الوصول إليه) InternalIsLocal
الممتلكات التي هي:
return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
(يعود هذا التعبير true
لوضعي). قد يكون استخدام هذا النهج هو الأفضل بحيث لا يعتمد الرمز الخاص بك على عنوان IPv4 حيث يتم الانتقال إلى IPv6.
لا تنتمي إلى StackOverflow