시스템에서 알 수 없는 오류가 발생했을 때, 어떻게 문제를 파악할지 고민되었습니다...😵💫
이러한 오류는 정확히 파악하기 위해서는 문제가 발생한 경로를 확인하는 것이 중요할 것 같다고 판단하였습니다.
이를 위해 Header의 Referer값을 로그로 남겨보기로 결정했습니다!
이번 글에서는 HTTP 헤더의 Referer에 대해 알아보고, 이를 활용하여 문제를 파악하는 방법에 대해 설명하겠습니다.
Header Referrer란?
HTTP Referer 헤더는 웹 브라우저가 서버로 요청을 보낼 때 이전 웹 페이지의 URL을 포함하는 HTTP 헤더입니다.
이 헤더는 현재 요청의 어떤 경로를 통해 왔는지를 서버가 알 수 있게 해 줍니다.
웹 브라우저가 페이지 A에서 페이지 B로 이동할 때, 페이지 B의 서버는 Referer 헤더를 통해 페이지 A URL을 알 수 있습니다.
Header Referer 확인하는 방법
위의 정보를 통하여 어떤 페이지를 통하여 발생했는지 확인할 수 있습니다.
아래 순서대로 진행하면 Header Referer를 확인할 수 있습니다.
- 개발자 도구(DevTool)를 열고 Network 탭을 선택합니다.
- 페이지를 새로고침하여 네트워크 요청 목록을 확인합니다.
- 원하는 목록을 선택하여 Header를 확인할 수 있습니다.
Referer 헤더의 용도
Referer 헤더는 여러 가지 용도로 사용됩니다.
- 트래픽 분석
웹사이트 관리자는 Referer 정보를 통해 방문자가 어떤 경로를 통해 사이트에 들어왔는지 분석할 수 있습니다. - 마케팅 분석
특정 마케팅 캠페인이 얼마나 효과적인지 확인하는데 도움이 됩니다. - 보안
요청이 예상한 출처에서 온 것인지 확인할 수 있습니다. 이를 통해 CSRF(Cross-Site Request Forgery) 공격을 방지할 수 있습니다. - 콘텐츠 개인화
사용자가 어떤 페이지에서 왔는지에 따라 다른 콘텐츠를 제공할 수 있습니다.
Spring Boot에서 Referer 헤더 사용하기
Spring Boot를 사용하여 Referer 헤더를 확인하는 방법을 살펴보겠습니다.
HttpServletRequest 객체나 매개변수로 직접 Referer 헤더 값을 받아올 수 있습니다.
HttpServletRequest 객체 사용하기
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/api")
public class ReferrerController {
@GetMapping("/check-referrer")
public String checkReferrer(HttpServletRequest request) {
String referrer = request.getHeader("Referer");
//referrer 로그 남기기
}
}
매개변수로 직접 헤더 값 받기
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ReferrerController {
@GetMapping("/check-referrer")
public String checkReferrer(@RequestHeader(value = "Referer", required = false) String referrer) {
//referer 로그 남기기
}
}
이 두 가지 방법 모두 HTTP 요청의 Referer 헤더 값을 가져올 수 있습니다.
💡Referrer 정보는 웹 애플리케이션에서 매우 유용하게 사용될 수 있습니다.
Spring Boot에서는 HttpServletRequest 객체를 통해 쉽게 이 정보를 확인할 수 있습니다.
이를 통해 트래픽 분석, 마케팅 분석, 보안 강화 등 다양한 목적으로 활용이 가능합니다!
'개발끄적' 카테고리의 다른 글
효율적인 프로그래밍을 위한 동기/비동기와 블로킹/논블로킹 이해하기 (0) | 2024.11.10 |
---|---|
쿠키(Cookie)와 세션(Session) (0) | 2024.11.03 |
계층형 아키텍처와 도메인형 아키텍처: 패키지 구조의 비교 (0) | 2024.06.24 |
HTTP Method (GET, POST, PUT, DELETE, ...) (0) | 2024.01.19 |
REST, RESTful 그리고 REST API, RESTful API (3) | 2024.01.03 |