본문 바로가기
CSE/네트워크

[네트워크] HTTP 헤더 - 일반헤더

by 잔디🌿 2025. 3. 28.

    HTTP 헤더 개요

     

    일반적으로 헤더 내 필드의 구성은 이러하다

     

    헤더는 HTTP 전송에 필요한 모든 부가정보를 가지고 있다.

     

    최신스펙에서

     

    메세지는 표현헤더와 표현데이터로 나뉜다.

    메세지 본문 = 페이로드

    표현은 요청이나 응답에서 전달할 실제 데이터이다. 

    표현헤더는 표현 데이터를 해설할 수 있는 정보를 제공한다.(유형, 길이..)

     

    표현

    Content - Type

    미디어 타입, 문자 인코딩을 나타낸다.

     

    Content - Encoding

    표현 데이터를 압축하기 위해 사용한다.

    데이터를 전달하는 곳에서 압축 후 인코딩 헤더를 추가한다.

    그러면 데이터를 읽는 곳에서 인코딩 헤더의 정보로 압축해제한다.

     

    Content-Language

    표현 데이터의 자연언어를 표현한다.

    Content-Length

    표현데이터의 길이

    바이트 단위로 표현된다.

    협상

    클라이언트가 선호하는 표현 요청이다

    위 요청들을 클라이언트가 전달하면 서버는 최대한 이에 맞게 정보를 제공한다.

     

    따라서 이렇게 클라이언트가 ko를 선호한다고 헤더에 넣어두면

    다중언어지원 서버는 이에 맞게 한국어로 응답한다

    하지만 한국어가 없는 경우도 있다. 우리는 영어는 그나마 읽을 수 있지만 이를 모르는 서버는 기본 언어인 독일어로 응답한다.

    이를 방지하기 위해 협상 우선순위가 존재한다.

     

    우선순위는 0에서 1이고 1에 가까울수록 우선순위가 높다.

    이렇게 하면 서버는 우선순위가 높은 순서대로 고려하여 응답한다.

     

    또한 이러한 경우 구체적인 것을 우선순위로 하여 미디어타입을 맞춘다.

     

    전송방식

    단순전송

    단순히 클라이언트가 요청한 정보를 전송하는 방식이다.

     

    압축전송

    이 경우는 내용을 압축하여 전송하는 방식이다. 이 때 Content-Encoding을 통해서 압축 방식을 명시해야한다.

     

    분할전송

    분할전송은 데이터를 분할하여 보내는 방식이다. 

    Data Length는 제공하지 않는다. Transfer-Encoding태그에 chunked가 들어간다

     

    범위전송

    만약 사진 등과 같은 정보가 오가다 끊겼다면, 처음부터 다시 받기에는 아깝다. 

    따라서 이럴 때 범위전송을 통해서 원하는 범위의 데이터만 가져올 수 있다.

     

    일반정보

    Referer

    이전 웹페이지 주소

    구글에서 검색한 페이지로 가면 referer은 google.com

    유입경로를 분석할 수 있다

    요청에서 사용된다.

     

    User-Agent

    유저 에이전트 애플리케이션 정보

    이렇게 생겼다.

    만약 장애가 발생하면 어떤 종류의 브라우저에서 장애가 발생하였는지 파악이 가능하다

    요청에서 사용한다.

     

    Server

    요청을 처리하는 오리진 서버의 소프트웨어 정보이다.

    응답에서 사용한다.

     

    Date

    메시지가 발생한 날짜와 시간을 나타낸다.

    응답에서 사용한다.

     

    특별한 정보

    Host

    요청에서 사용하고 필수적으로 들어가야한다.

    하나의 서버(IP주소)에 여러 도메인이 적용되어 있을 때 필요

    이렇게 하나의 서버에 여러 도메인이 있을 경우 Host로 알맞은 곳에 요청이 전달될 수 있다.

     

    Location

    3xx 코드에서 리다이렉션 될 uri를 담는 곳이다.

    201(Created)에서는 요청에 의해 생성된 리소스 URI를 의미한다.

     

    Allow

    허용 가능한 HTTP 메서드

    만약 post를 지원하지 않는 서버라면 allow에 지원하는 메서드 종류를 나열한다.

     

    Retry-After

    유저 에이전트가 다음 요청을 하기까지 기다려야하는 시간이다.

     

    인증

    Authorization

    클라이언트 인증 정보를 서버에 전달한다.

     

    WWW-Authenticate 

    401 Unauthorized 응답과 함께 사용한다.

    주어진 정보를 참고하여 인증하라는 뜻이다.

     

    쿠키

    기본적으로 서버는 무상태성을 가지고있다.

    그래서 사용자가 웹 브라우저에서 로그인해도 서버는 이를 기억하지 못한다.

     

    이렇게 모든 요청에 사용자 정보를 포함할수도 있다.

    근데 이렇게 하면 너무 개발하기도 복잡하고 보안상으로 좋지 않다.

     

    따라서 우리는 쿠키를 사용한.

     

     

    서버에서 로그인처리를 하면 쿠키 저장소에 쿠키가 저장된다.

    그럼 로그인 후에 메인페이지에 접근하면 유저의 이름이 뜨도록 할 수 있다.

     

    여기서 쿠키는 User = 홍길동 그 자체이다.

    클라이언트가 쿠키 저장소에서 user = 홍길동을 꺼내서 이를 사용해서 요청하면 서버는 이 정보를 토대로 user정보를 추정한다.

     

     

    생명주기

    expires : 생명주기를 나타냄

    세션쿠키 : 만료날짜를 생략하면 브라우저 종료시까지만 유지

    영속쿠키 : 만료날짜를 입력함녀 해당 날짜까지 유지

     

    도메인

    명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함

    example.org 외에도 dev.example.org도 쿠키 접근 가능

     

    하지만 생략하면 현재 문서 기준 도메인만 접근 가능하다

     

    path

    이 경로를 포함한 하위 경로 페이지만 쿠키 접근이 가능하다

     

    Secure, HttpOnly, SameSite

    Secure - https인 경우에만 전송

    httpOnly - xss 공격방지, 자바스크립트에서 접근 불가하고 HTTP 전송에만 사용된다.

    SameSite - XSRF 공격 방지, 요청 도메인과 쿠키 설정 도메인이 같은 경우에만 쿠키 전송

     

    https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

     

    모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런

    김영한 | , [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵을 먼저 확인해주세요. (바

    www.inflearn.com

     

    'CSE > 네트워크' 카테고리의 다른 글

    [네트워크] HTTP 헤더 - 캐시와 조건부 요청  (2) 2025.03.28
    [네트워크] HTTP 상태코드  (1) 2025.03.28
    [네트워크] HTTP 메서드 활용  (2) 2025.03.28
    [네트워크] HTTP 메서드  (3) 2025.03.27
    [네트워크] HTTP 기본  (1) 2025.03.25