如何在webflux中获取客户端IP?
How to get client IP in webflux?
我曾经调用 HttpServletRequest.getRemoteAddr() 来获取客户端 ip。
我想知道如何通过 ServerWebExchange 获取它。
我的最佳猜测是:
serverWebExchange.getRequest().getRemoteAddress().getAddress().getHostAddress();
是否正确?
是的,这是实现该目标的正确方法。
请注意,如果您想支持转发或 X-Forwarded-* HTTP 请求 headers,则需要在服务器配置级别进行配置。
您还可以将 org.springframework.http.server.ServerHttpRequest
作为参数添加到 @RerquestMapping
注释方法并从中获取 IP 地址:
@GetMapping("/myPath")
public void someMethod(ServerHttpRequest request) {
System.out.println(request.getRemoteAddress().getAddress().getHostAddress();)
}
你可以使用org.springframework.http.server.reactive.ServerHttpRequest
,
String remoteAddress = serverHttpRequest.getRemoteAddress().getAddress().getHostAddress();
因为它在文档中很悲伤:.reactive.ServerHttpRequest
表示反应性 server-side HTTP 请求。
我曾经调用 HttpServletRequest.getRemoteAddr() 来获取客户端 ip。
我想知道如何通过 ServerWebExchange 获取它。
我的最佳猜测是:
serverWebExchange.getRequest().getRemoteAddress().getAddress().getHostAddress();
是否正确?
是的,这是实现该目标的正确方法。 请注意,如果您想支持转发或 X-Forwarded-* HTTP 请求 headers,则需要在服务器配置级别进行配置。
您还可以将 org.springframework.http.server.ServerHttpRequest
作为参数添加到 @RerquestMapping
注释方法并从中获取 IP 地址:
@GetMapping("/myPath")
public void someMethod(ServerHttpRequest request) {
System.out.println(request.getRemoteAddress().getAddress().getHostAddress();)
}
你可以使用org.springframework.http.server.reactive.ServerHttpRequest
,
String remoteAddress = serverHttpRequest.getRemoteAddress().getAddress().getHostAddress();
因为它在文档中很悲伤:.reactive.ServerHttpRequest
表示反应性 server-side HTTP 请求。