자바/실무 유용한 것!
request.getHeader()
은은하게미친자
2025. 5. 13. 11:12
728x90
request.getHeader()는 Java의 Servlet API에서 제공하는 메서드로, HTTP 요청의 헤더 값을 가져올 때 사용됩니다. 주로 HttpServletRequest 객체를 통해 사용됩니다.
📌 기본 문법
java
복사편집
String headerValue = request.getHeader("Header-Name");
- request는 HttpServletRequest 객체입니다.
- "Header-Name"에는 가져오고 싶은 HTTP 헤더 이름을 문자열로 넣습니다.
- 해당 이름의 헤더가 존재하면 값을 반환하고, 없으면 null을 반환합니다.
✅ 예시
java
복사편집
String userAgent = request.getHeader("User-Agent"); System.out.println("사용자의 브라우저 정보: " + userAgent);
- 클라이언트(브라우저나 앱)가 보낸 User-Agent 값을 출력합니다.
📋 request.getHeader()에서 사용할 수 있는 헤더 이름 예시
헤더 이름설명
Host | 요청을 보낸 서버의 도메인 이름 (예: example.com) |
User-Agent | 클라이언트의 브라우저, OS 등의 정보 |
Accept | 클라이언트가 처리 가능한 MMIE 콘텐츠 타입 (예: application/json) |
Accept-Encoding | 클라이언트가 수신 가능한 압축 방식 (예: gzip, deflate) |
Accept-Language | 클라이언트가 선호하는 언어 (예: ko-KR, en-US) |
Connection | 연결 방식 지정 (예: keep-alive, close) |
Content-Type | 요청 본문의 데이터 타입 (예: application/json) |
Content-Length | 요청 본문의 길이 (바이트 단위) |
Referer | 이전에 방문한 페이지의 URL |
Origin | 요청의 출처 도메인 (주로 CORS에서 사용) |
Authorization | 인증 정보 (예: Bearer 액세스_토큰, Basic base64(ID:PW)) |
Cookie | 클라이언트의 쿠키 정보 |
X-Requested-With | AJAX 요청 여부 (XMLHttpRequest 등) |
If-Modified-Since | 특정 시간 이후 리소스가 변경된 경우에만 응답 요청 |
Cache-Control | 캐시 정책 제어 (예: no-cache, max-age=3600) |
Range | 리소스의 특정 범위를 요청할 때 사용 |
X-Forwarded-For | 클라이언트의 실제 IP 주소를 알아내기 위한 용도 가장 표준적이고 많이 쓰이는 헤더. 클라이언트의 실제 IP와 거친 프록시들의 IP가 나열됨 (쉼표로 구분) ex) X-Forwarded-For: 123.45.67.89, 10.0.0.1, 192.168.0.1 |
Proxy-Client-IP | 클라이언트의 실제 IP 주소를 알아내기 위한 용도 일부 프록시 서버(예: Apache HTTP Proxy 등)에서 사용하는 비표준 헤더 |
WL-Proxy-Client-IP | 클라이언트의 실제 IP 주소를 알아내기 위한 용도 WebLogic 서버에서 사용하는 비표준 헤더 |
HTTP_CLIENT_IP | 클라이언트의 실제 IP 주소를 알아내기 위한 용도 일부 프록시 서버 또는 클라이언트에서 사용되는 비표준 헤더 |
HTTP_X_FORWARDED_FOR | 클라이언트의 실제 IP 주소를 알아내기 위한 용도 X-Forwarded-For의 또 다른 이름으로, 일부 환경에서 사용됨 (ex. PHP 환경 등) |
DNT | "Do Not Track" 추적 금지 요청 여부 (1이면 추적 거부) |
Upgrade-Insecure-Requests | HTTPS로 업그레이드 요청 (1) |
Sec-Fetch-Site | 요청 출처 정보 (same-origin, cross-site 등) |
Sec-Fetch-Mode | 요청 모드 (navigate, cors 등) |
Sec-Fetch-Dest | 요청 목적 (document, script 등) |
Proxy-Client-IP, WL-Proxy-Client-IP, HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR 등은 모두 프록시 서버나 로드 밸런서를 거친 클라이언트의 실제 IP 주소를 알아내기 위해 사용되는 요청 헤더입니다.
🕵️ 왜 이런 헤더들이 존재할까?
일반적으로 서버는 request.getRemoteAddr()를 사용해 클라이언트 IP를 얻습니다.
하지만 클라이언트가 프록시 서버나 로드 밸런서를 거쳐오면 이 값은 프록시의 IP 주소가 됩니다.
그래서 여러 벤더들이 클라이언트의 실제 IP를 다른 헤더에 담아 보내기 시작했어요.
🔁 참고: 모든 헤더 조회 방법
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName + ": " + headerValue);
}
💡 요약
- request.getHeader("헤더이름")은 클라이언트 요청의 HTTP 헤더 값을 가져오는 데 사용됨.
- 반환값은 String, 없으면 null.
- 인증, 브라우저 정보, CORS 처리 등 다양한 곳에 활용됨.
728x90