Trong khi điều này nghe có vẻ ngớ ngẩn, tôi vẫn chưa tìm được cách để nhận IP của ứng dụng khách trong Play 2.0. Nó có sẵn trong 1.2.x là Http.Request.remoteAddress
, nhưng 2.0 (tôi chủ yếu đã kiểm tra API Scala, nhưng tôi cũng đã kiểm tra nhanh Java) chỉ dường như cung cấp thông tin về phía máy chủ của yêu cầu trong play(.api).mvc.Request
. Có cái gì tôi đang mất tích? Các hack gần nhất tôi có thể nghĩ đến ngay bây giờ là thiết lập nó đằng sau một proxy ngược lại và sau đó kiểm tra X-Forwarded-For
, nhưng điều này không làm việc quá tốt trong dev.Cách nhận IP của khách hàng?
Trả lời
EDIT: Trở lại với câu trả lời này, điều này đã được bổ sung trong play framework 2.0.2: xem phát hành thông báo trên https://groups.google.com/forum/#!msg/play-framework/Z97GQ2VnR5M/T-STGaeuN68J%5B1-25%5D và quan trọng hơn tài liệu API tại http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.mvc.Request
như bạn có thể thấy hiện nay là hỗ trợ cho Request.remoteAddress
gốc:
hiện nay là một lỗi mở cho điều này trong bộ theo dõi: https://play.lighthouseapp.com/projects/82401/tickets/256-add-back-requestheaderremoteaddress
Tôi nghĩ rằng việc hack các thư viện play2.0 để bao gồm bản vá được liên kết hiện là đặt cược tốt nhất. Nó có lẽ vẫn còn sạch hơn là sử dụng một proxy với mục đích duy nhất là thêm các tiêu đề XFF, và sử dụng chúng để xác định IP.
Trên thực tế, tôi đã đăng bài đó và tôi là người đã tạo ra bản vá đó. –
Tôi nghĩ rằng bây giờ chúng ta có thể giả định đây là một 'Oops' bởi nhóm Play. Xấu hổ không ai nhận thấy nó trước 2.0 cuối cùng. Có lẽ bản báo cáo vẫn sẽ 'không, bạn có thể làm điều đó dễ dàng theo cách khác'. Nhưng tôi nghi ngờ nó. – Martijn
vâng, đó cũng là suy nghĩ của tôi, sau khi không thể tìm thấy nó. Cảm giác đó sau đó được củng cố bởi câu trả lời của Olivier, nó tham chiếu đến http://www.playframework.org/documentation/2.0/HTTPServer mà thực sự tham khảo request.remoteAddress (mặc dù điều đó không thực sự tồn tại). –
Vui lòng kiểm tra dự án Github này tại https://github.com/orefalo/play2-xforward
tôi lấy mã từ Play1 và chuyển nó vào Play2, nó sẽ hoạt động giống nhau.
Vẫn là một công việc đang tiến ...
Không, đó là _your_ domain/ip. –
bạn có chắc chắn không? nó được đọc như là "lười biếng val host: String = headers.get (play.api.http.HeaderNames.HOST) .getOrElse (" ")' dường như với tôi khi nó được đọc từ yêu cầu. Nó không thể là IP/miền địa phương. Bây giờ nếu bạn đọc bài viết, nó giải thích làm thế nào để bảo tồn các máy chủ gốc với một 'ProxyPreserveHost On' –
btw, cảm ơn bạn cho -1 cố gắng để sửa chữa vấn đề của bạn! –
- 1. Cách nhận địa chỉ ip của khách hàng/người dùng?
- 2. Cách nhận IP của khách hàng và IP máy chủ bằng cách sử dụng Rails
- 3. Nhận IP khách hàng thực trong Servlet
- 4. Nhận địa chỉ IP của khách hàng ở Sinatra?
- 5. Làm thế nào để tôi nhận được IP của khách hàng của một yêu cầu Tornado?
- 6. Kohana tiếp cận khách hàng ip
- 7. Bảo mật WCF bằng địa chỉ IP của khách hàng
- 8. Địa chỉ IP của khách hàng trong ASP.NET (.asmx) webservices
- 9. Nhận địa chỉ IP của khách hàng trong dịch vụ web RemObjects
- 10. Nhận địa chỉ IP của khách hàng: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, điều gì khác có thể hữu ích?
- 11. Nhận địa chỉ IP của ứng dụng khách trong JSP
- 12. Cách nhận địa chỉ IP từ xa/khách hàng bằng dịch vụ web RESTful trong java?
- 13. Apache Mina: cách nhận địa chỉ IP từ một khách hàng được kết nối
- 14. Máy khách Khách hàng gửi/nhận văn bản đơn giản
- 15. cách lấy địa chỉ IP của khách hàng trong lớp tĩnh trong asp.net mvc
- 16. Làm cách nào để nhận IP nguồn của máy khách yêu cầu SOAP?
- 17. Làm cách nào để sử dụng giao thức PROXY để nhận địa chỉ IP thực của khách hàng?
- 18. ServerSocket + client Socket - làm cách nào để nhận địa chỉ IP của ứng dụng khách?
- 19. Tôi có thể tìm hiểu ip của khách hàng bằng .NET bằng cách nào?
- 20. Cách lấy địa chỉ IP của khách hàng với thư viện WebSocket (websockets/ws) trong Node.js?
- 21. WICKET: cách lấy địa chỉ ip/địa chỉ của khách hàng
- 22. Cách nhận tất cả thông tin khách hàng từ khách truy cập trang web?
- 23. Máy khách TCP/IP khách quan
- 24. Làm thế nào để bạn nhận được địa chỉ IP của khách hàng trong bộ điều khiển Grails?
- 25. Nhận địa chỉ IP của ứng dụng khách Đối với dịch vụ web
- 26. Nhận địa chỉ IP của người dùng
- 27. Làm thế nào để xác định địa chỉ IP của khách hàng yêu cầu?
- 28. Nhận tên hệ điều hành của khách hàng
- 29. asp.net mvc phía khách hàng xác nhận
- 30. Lấy địa chỉ IP của khách hàng trong GWT và Google App Engine
Xin chào, nếu bạn có yêu cầu Http, bạn đã thử sử dụng một mẹo với 'play.api.http.HeaderNames.FROM' và tiêu đề yêu cầu có thể bạn có thể nhận được bằng cách nào đó không? –
Từ -Địa chỉ email của người dùng thực hiện yêu cầu. Không chắc chắn nếu điều này sẽ làm việc –