remoteInfo property
String
get
remoteInfo
Returns information about the remote client that made the request.
The information is extracted from HTTP headers, preferring the Forwarded
header, then the X-Forwarded-For header, and using
ConnectionInfo.remote.address as fallback.
Implementation
String get remoteInfo {
// Prefer first element of `Forwarded` Header
//
// Grammar:
// for = "for" "=" ( node-id / quoted-string )
// node-id = ( IPv4address / "[" IPv6address "]" / "unknown" / obfuscated )
// obfuscated = "_" 1*( ALPHA / DIGIT / "." / "_" / "-" )
//
// Examaples: “192.0.2.43”, “[2001:db8::1]”, “unknown”, or “_08fusc4t3d"
final forwardedFor =
headers.forwarded?.elements.first.forwardedFor?.identifier;
// Fallback to `X-Forwarded-For` then IPAddress of remote
return forwardedFor ??
headers.xForwardedFor?.addresses.first ?? // anything really ¯\_(ツ)_/¯
connectionInfo.remote.address.toString();
}