http - ocultos - Cómo obtener la dirección IP entrante en el framework Spray
ocultar campo contact form 7 (2)
El problema estaba en la configuración, esto no está bien documentado. Añadiendo esto:
# spray-can config
spray.can {
server {
remote-address-header = on
}
}
fuerza el rociado para agregar el encabezado IP remoto a los encabezados principales. El encabezado de la dirección tendrá el nombre de dirección remota.
Estoy viendo los encabezados que están llegando, pero parece que no hay IP:
HttpRequest(GET,http://127.0.0.1:8080/track/check,List(Accept-Language: uk-UA,
uk, ru, en-US, en, Encoding: gzip, deflate, sdch, User-Agent: Mozilla/5.0
(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29
Safari/537.36, Accept: text/html, application/xhtml+xml, application/xml;q=0.9,
*/*;q=0.8, Connection: keep-alive, Host: 127.0.0.1:8080),EmptyEntity,HTTP/1.1)
Esta es una solicitud que hice desde el navegador. Básicamente estoy mirando en:
path("check") {
get {
implicit request => {
val a = 5
}
}
} ~
Aquí el objeto de solicitud no tiene ninguna información sobre la dirección IP. Se agradece mucho cualquier ayuda. Gracias.
Si está utilizando el enrutamiento de rociado, entonces hay una directiva para extraer la ip del cliente llamada clientIP
=) Para usarlo, simplemente escriba:
(path("somepath") & get) {
clientIP { ip =>
complete(s"ip is $ip")
}
}
más que simple, pero aún necesita agregar una configuración explícita para obtener IP de la solicitud. Y un pequeño comentario, tal vez no obtuve algo pero en spray no hay una implicit request
. En realidad, la solicitud entrante se filtra a través de su estructura de enrutamiento, si observa la biblioteca de enrutamiento verá que la ruta es solo un alias: type Route = RequestContext => Unit
. Entonces, si necesita obtener acceso al contexto en algún punto, simplemente escriba:
(path("somepath") & get) {
clientIP { ip =>
reqCont => reqCont.complete(s"ip is $ip")
}
}
Pero recuerda sobre la parte de la ruta estática y la parte dinámica.