كيفية الحصول على IP العميل؟
-
14-12-2019 - |
سؤال
على الرغم من أن هذا يبدو سخيفًا، إلا أنني لم أتمكن من العثور على طريقة للحصول على عنوان IP الخاص بالعميل في Play 2.0.كان متاحًا في الإصدار 1.2.x Http.Request.remoteAddress
, ، ولكن 2.0 (لقد قمت في المقام الأول بفحص Scala API، لكنني قمت بفحص سريع لـ Java أيضًا) يبدو أنه يوفر معلومات حول جانب الخادم للطلب في play(.api).mvc.Request
.هل هناك شيء أفتقده؟أقرب اختراق يمكنني التفكير فيه الآن هو إعداده خلف وكيل عكسي ثم التحقق X-Forwarded-For
, ، لكن هذا لا يعمل بشكل جيد في عملية التطوير.
المحلول
تحرير: بالعودة إلى هذه الإجابة، تمت إضافة هذا في playframework 2.0.2:انظر إعلان الإصدار على https://groups.google.com/forum/#!msg/play-framework/Z97GQ2VnR5M/T-STGaeuN68J%5B1-25%5D والأهم من ذلك وثائق API في http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.mvc.Request
كما ترون هناك الآن الدعم ل Request.remoteAddress
إبداعي:
يوجد حاليًا خطأ مفتوح لهذا في المتتبع: https://play.lighthouseapp.com/projects/82401/tickets/256-add-back-requestheaderremoteaddress
أعتقد أن اختراق مكتبات play2.0 لتضمين التصحيح المرتبط هو أفضل رهان حاليًا.ربما لا يزال الأمر أنظف من استخدام وكيل لغرض وحيد هو إضافة رؤوس XFF، واستخدامها لتحديد عنوان IP.
نصائح أخرى
يرجى التحقق من مشروع Github هذا في https://github.com/orefalo/play2-xforward <>