프로젝트 도중 IP 를 받을 필요가 생겼다.
IP를 받는 방법은 구글링 해서 쉽게 얻을 수 있었다.
@Controller
@RequestMapping("/address/api")
@Slf4j
public class AddressController {
@GetMapping("/get")
@ResponseBody
public String getLocation(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null) {
ip = request.getHeader("Proxy-Client-IP");
log.info(">>>> Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("WL-Proxy-Client-IP"); // 웹로직
log.info(">>>> WL-Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_CLIENT_IP");
log.info(">>>> HTTP_CLIENT_IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
log.info(">>>> HTTP_X_FORWARDED_FOR : " + ip);
}
if (ip == null) {
ip = request.getRemoteAddr();
}
log.info(">>>> Result : IP Address : "+ip);
return ip;
}
}
근데 IP 가 아래와 같이 IPv6 형식으로 출력됐다
IP : 0:0:0:0:0:0:0:1
JAVA VM 설정을 해주면 원하는 IPv4 형식으로 받을 수 있다.
-Djava.net.preferIPv4Stack=true
VM arguments 에 위 코드를 넣어주면 IPv4 형식으로 IP를 출력할 수 있다!