개발끄적

Header Referer를 아시나요?

누구세연 2024. 7. 30. 21:14

시스템에서 알 수 없는 오류가 발생했을 때, 어떻게 문제를 파악할지 고민되었습니다...😵‍💫

이러한 오류는 정확히 파악하기 위해서는 문제가 발생한 경로를 확인하는 것이 중요할 것 같다고 판단하였습니다.

이를 위해 Header의 Referer값을 로그로 남겨보기로 결정했습니다!

 

이번 글에서는 HTTP 헤더의 Referer에 대해 알아보고, 이를 활용하여 문제를 파악하는 방법에 대해 설명하겠습니다.

 

Header Referrer란?

HTTP Referer 헤더는 웹 브라우저가 서버로 요청을 보낼 때 이전 웹 페이지의 URL을 포함하는 HTTP 헤더입니다.

이 헤더는 현재 요청의 어떤 경로를 통해 왔는지를 서버가 알 수 있게 해 줍니다.

웹 브라우저가 페이지 A에서 페이지 B로 이동할 때, 페이지 B의 서버는 Referer 헤더를 통해 페이지 A URL을 알 수 있습니다.

 

Header Referer 확인하는 방법

위의 정보를 통하여 어떤 페이지를 통하여 발생했는지 확인할 수 있습니다.

아래 순서대로 진행하면 Header Referer를 확인할 수 있습니다.

  1. 개발자 도구(DevTool)를 열고 Network 탭을 선택합니다.
  2. 페이지를 새로고침하여 네트워크 요청 목록을 확인합니다.
  3. 원하는 목록을 선택하여 Header를 확인할 수 있습니다.

 

Referer 헤더의 용도

Referer 헤더는 여러 가지 용도로 사용됩니다.

  1. 트래픽 분석
    웹사이트 관리자는 Referer 정보를 통해 방문자가 어떤 경로를 통해 사이트에 들어왔는지 분석할 수 있습니다.
  2. 마케팅 분석
    특정 마케팅 캠페인이 얼마나 효과적인지 확인하는데 도움이 됩니다.
  3. 보안
    요청이 예상한 출처에서 온 것인지 확인할 수 있습니다. 이를 통해 CSRF(Cross-Site Request Forgery) 공격을 방지할 수 있습니다.
  4. 콘텐츠 개인화
    사용자가 어떤 페이지에서 왔는지에 따라 다른 콘텐츠를 제공할 수 있습니다.

 

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 객체를 통해 쉽게 이 정보를 확인할 수 있습니다.
이를 통해 트래픽 분석, 마케팅 분석, 보안 강화 등 다양한 목적으로 활용이 가능합니다!