Mentre questo sembra sciocco, non sono stato in grado di trovare un modo per ottenere l'IP del client in Play 2.0. Era disponibile in 1.2.x come Http.Request.remoteAddress
, ma 2.0 (ho controllato principalmente l'API Scala, ma ho fatto anche un rapido controllo di quello Java) sembra solo fornire informazioni sul lato server della richiesta in. C'è qualcosa che mi manca? Il trucco più vicino che mi viene in mente in questo momento è configurarlo dietro un proxy inverso e quindi controllare X-Forwarded-For
, ma questo non funziona troppo bene in dev.Come ottenere l'IP del client?
risposta
EDIT: Tornando a questa risposta, questo è stato aggiunto nel play framework 2.0.2: vedi comunicato annuncio sul https://groups.google.com/forum/#!msg/play-framework/Z97GQ2VnR5M/T-STGaeuN68J%5B1-25%5D e soprattutto la documentazione delle API a http://www.playframework.org/documentation/api/2.0.2/scala/index.html#play.api.mvc.Request
come si può vedere non v'è ora il supporto per Request.remoteAddress
originale:
V'è attualmente un bug aperto per questo in inseguitore: https://play.lighthouseapp.com/projects/82401/tickets/256-add-back-requestheaderremoteaddress
Penso che l'hacking delle librerie di play2.0 per includere la patch collegata sia attualmente la scelta migliore. Probabilmente è ancora più pulito che usare un proxy con l'unico scopo di aggiungere intestazioni XFF e usarle per determinare l'IP.
In realtà, l'ho pubblicato, e io sono quello che ha realizzato quella patch. –
Penso che ormai possiamo tranquillamente supporre che questo sia stato un "Oops" della squadra di Play. Peccato che nessuno l'abbia notato prima della 2.0 finale. Forse il bugreport andrà ancora 'no, puoi farlo facilmente in un altro modo'. Ma ne dubito. – Martijn
sì, quello era anche il mio pensiero, dopo essere stato incapace di trovarlo. Tale sensazione è stata poi rafforzata dalla risposta di Olivier che fa riferimento a http://www.playframework.org/documentation/2.0/HTTPServer che in realtà fa riferimento a request.remoteAddress (anche se in realtà non esiste). –
prega di controllare questo progetto Github a https://github.com/orefalo/play2-xforward
ho preso il codice da Play1 e portato a Play2, dovrebbe funzionare lo stesso.
ancora un work in progress ...
No, è _your_ domain/ip. –
sei sicuro? viene letto come tale 'lazy val host: String = headers.get (play.api.http.HeaderNames.HOST) .getOrElse (" ")' mi sembra mentre viene letto dalla richiesta. Non può essere l'IP/dominio locale. Ora se leggi il post, spiega come preservare l'host originale con un 'ProxyPreserveHost On' –
btw, grazie per il -1 cercando di risolvere il tuo problema! –
- 1. Ottenere l'indirizzo IP del client
- 2. Come posso ottenere l'IP del client di una richiesta Tornado?
- 3. Come ottenere l'indirizzo IP del client in Play! quadro 2.0?
- 4. Come ottenere l'indirizzo IP del client desktop remoto?
- 5. Come posso ottenere l'indirizzo IP del client usando TcpClient?
- 6. Come ottenere l'IP del client dietro un ELB AWS?
- 7. Come ottenere l'indirizzo IP del client in Java HttpServletRequest
- 8. Ottenere il nome del sistema operativo del client
- 9. Come ottenere l'indirizzo IP client/utente?
- 10. Come ottenere informazioni sul client in node.js
- 11. come rilevare il fuso orario del client?
- 12. Come identificare l'indirizzo IP del client richiedente?
- 13. ws JAX ottenere IP Client
- 14. Debug del client Socket.io?
- 15. Come posso controllare il NLS_LANG del client?
- 16. come generare l'identificativo client OAuth e il segreto del client?
- 17. Impossibile ottenere connessione client fabbrica
- 18. Impostazione del timeout del client jax-ws
- 19. socket.id del client di disconnessione?
- 20. Come ottenere l'indirizzo Mac della macchina client in un'applicazione Web
- 21. Come ottenere IP client e IP server utilizzando Rails
- 22. Come posso ottenere l'indirizzo remoto di un client in servlet?
- 23. Opzione di download del file tramite script client-client all'interno del sistema client
- 24. Implementazione del client COMET
- 25. Come specificare la porta del client iperf
- 26. Come gestire il disconnessione del client WCF
- 27. come ottenere l'indirizzo MAC di un client da HttpServlet?
- 28. Come posso ottenere informazioni sul client come SO e browser
- 29. Come ottenere uuid o indirizzo mac dal client in Java?
- 30. come ottenere client IP utilizzando 4.x espresso
Salve, se hai una richiesta Http, hai provato a usare un trucco con 'play.api.http.HeaderNames.FROM'e l'intestazione della richiesta probabilmente puoi ottenere in qualche modo? –
Da -L'indirizzo email dell'utente che ha effettuato la richiesta. Non sono sicuro se questo funzionerà –