728x90
HTTP헤더란?
HTTP헤더는 HTTP메세지의 구성 요소중 하나로써 클라이언트의 요청이나 서버의 응답에 포함되어 부가적인 정보를 HTTP메세지에 포함할 수 있도록 해준다.
개발자들이 직접 실무에서 사용하는 대표적인 HTTP헤더 예시 2가지
- Authorization
"Authorization"헤더 정보는 클라이언트가 적절한 자격 증명을 가지고 있는지 확인하기 위한 정보이다
일반적으로 REST API 기반 애플리케이션의 경우 클라이언트와 서버 간의 로그인(사용자ID/비밀번호) 인증에 통과한 클라이언트들은"Authorization"헤더 정보를 기준으로 인증에 통과한 클라이언트가 맞는지 확인하는 절차를 거친다. - User-Agent
실무에서 애플리케이션을 구현하다보면 여러가지 유형의 클라이언트가 하나의 서버 애플리케이션에 요청을 전송하는 경우가 많다
어떤 사용자는 데스크탑 또는 노트북 컴퓨터에 있는 웹브라우저를 사용해서 서버에 요청을 보내고, 또 어떤 사용자는 스마트폰이나 태블릿 등 모바일에서 요청을 보내는데 이 경우 데스크 탑에서 들어오는 요청과 모바일에서 들어오는 요청을 구분해서 응답 데이터를 다르게 보내줘야되는 경우가 있을 수 있다.
예를들면, 모바일 화면과 데스크 탑 또는 노트북 화면 크기의 차이가 많이 나기 때문에 더 큰 화면에서 더 많은 정보를 보여주기 위해 각각 데이터의 종류와 크기가 다를 수 있다 이경우 User-Agent정보를 이용해서 모바일 에이전트에서 들어오는 요청인지 모바일 이외에 다른 에이전트에서 들어오는 요청인지를 구분해서 처리할 수 있다.
HTTP Request헤더 정보 얻기
Spring MVC는 HTTP 헤더 정보를 읽어오는 몇가지 방법을 제공하고있다.
- HTTP Request 헤더(Header) 정보 얻기
- @RequestHeader 애너테이션을 이용해서 개별 헤더 정보 및 전체 헤더 정보를 얻을 수 있다.
- HttpServletRequest 또는 HttpEntity 객체로 헤더 정보를 얻을 수 있다.
- HTTP Response 헤더(Header) 정보 추가
- ResponseEntity와 HttpHeaders를 이용해 헤더 정보를 추가할 수 있다.
- HttpServletResponse 객체를 이용해 헤더 정보를 추가할 수 있다.
심화 학습
- 아래 링크를 통해 HTTP 헤더(Header)에 대해
- HTTP 헤더(Header) 더 알아보기: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers
- 아래 링크를 통해 HttpServletRequest에 대해
- HttpServletRequest API Docs
- HttpServletResponse API Docs
- 아래 링크를 통해 User Agent의 유형에 대해
- 커스텀 헤더(Custom Header)를 어떤식으로 사용할 수 있는지
- Google Cloud Load Balancing 사례: https://cloud.google.com/load-balancing/docs/user-defined-request-headers?hl=ko
- AWS Elastic Load Balancing 사례: https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/x-forwarded-headers.html
728x90
'TIL' 카테고리의 다른 글
[Spring][JPA][Persistence Context] (0) | 2022.11.01 |
---|---|
[SpringMVC][Rest Client] (0) | 2022.10.31 |
[Spring Data JDBC][DDD] (0) | 2022.10.28 |
[도메인 엔티티 및 테이블 설계][Sample] (0) | 2022.10.27 |
[SpringMVC][Spring Data JDBC] (0) | 2022.10.27 |