clientIP

Provides the value of X-Forwarded-For, Remote-Address, or X-Real-IP headers as an instance of HttpIp.

Signature

def clientIP: Directive1[RemoteAddress] 

Description

spray-can and spray-servlet adds the Remote-Address header to every request automatically if the respective setting spray.can.server.remote-address-header or spray.servlet.remote-address-header is set to on. Per default it is set to off.

Example

val route = clientIP { ip =>
  complete("Client's ip is " + ip.toOption.map(_.getHostAddress).getOrElse("unknown"))
}

Get("/").withHeaders(`Remote-Address`("192.168.3.12")) ~> route ~> check {
  responseAs[String] === "Client's ip is 192.168.3.12"
}