YJ의 새벽

HTTP 헤더 본문

Spring/HTTP 웹 기본지식

HTTP 헤더

YJDawn 2023. 4. 9. 00:18

 

 

 

HTTP 헤더 용도

-- HTTP 전송에 필요한 모든 부가정보

-- 메시지 바디의 내용 , 바디의 크기, 압축, 인증, 요청클라이언트, 서버정보, 캐시 ....등

-- 표준 헤더가 너무 많다.

-- 필요시 임의의 헤더 추가 가능.

 

HTTP 헤더 분류

-- General 헤더  :  메시지 전체에 적용되는 정보.   ex ) Connection : close .

-- Request 헤더  :  요청 정보,     ex ) User-Agent : Mozilla/5.0 .

-- Response 헤더  :  응답 정보    ex ) Server.Apache

-- Entity 헤더  :  엔티티 바디 정보  ex ) Content-Type : text/html , Content-Length : 3423

 

 

 

 

 

  • 표현헤더

-- Content-Type : 표현 데이터의 형식

-- Content-Encoding : 표현 데이터의 압축 방식

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

                                 : 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제

                                 : ex) gzip , deflate, identity

-- Content-Language : 표현 데이터의 자연 언어

-- Content-Length : 표현 데이터의 길이 (바이트단위)

                             : Transfer-Encoding(전송코딩) 을 사용하면 Content-Length 사용불가.

-- 표현 헤더는 전송, 응답 둘다 사용

 

 

 

 

 

 

  • 협상 헤더  ( 콘텐츠 네고시에이션 )    - 클라이언트가 선호하는 표현을 서버에 요청 

-- Accept : 클라이언트가 선호하는 미디어 타입 전달

-- Accept-Charset : 클라이언트가 선호하는 문자 인코딩

-- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩

-- Accept-Language : 클라이언트가 선호하는 자연 언어

--- 협상 헤더는 요청시에만 사용.

 

**** 협상과 우선순위

-- 0~ 1  , 클수록 높은 우선순위

-- 생략하면 1

-- Accept-Language: ko-KR, ko;q=0.9 , en-US;q=0.8 , en;q=0.7

      -- 1   ko-KR;q   = 1  (q생략)

      -- 2   ko;q = 0.9

      -- 3   en-US;q = 0.8

      -- 4   en;q = 0.7

 

 

**** 협상과 우선순위22

-- 구체적인 것이 우선한다.

-- Accept: text/* , text/plain, text/plain;format=flowed, */*

   -- 1   text/plain;format = flowed

   -- 2   text/plain

   -- 3   text/*

   -- 4   */*

 

 

 

 

 

 

 

 

 

  • 전송방식

-- 단순 전송

-- 압축 전송

-- 분할 전송   -- 용량이 큰것을, 바이트로 나누어 따로따로 분할, 전송한다.

-- 범위 전송

 

 

 

 

 

 

 

 

 

  • 쿠키 

-- Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)

-- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달.

 

 

 

*** Stateless  ( 무상태 )

-- HTTP 는 무상태 프로토콜이다.

-- 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다.

-- 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못한다.

-- 클라이언트와 서버는 서로 상태를 유지하지 않는다 .

 

 

 

 

*** 쿠키 - 생명주기

--Set-Cookie : expires = Sat, 26-Dec-2020 04:39:21 GMT   

   - 만료일이 되면 쿠키 삭제

--Set-Cookie  :  max-age=3600 (3600초)

   - 0이나 음수를 지정하면 쿠키삭제 . 

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

--영속쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지

 

** 쿠키 - 도메인 

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

-- ex ) domain = example.org   지정해서 쿠키 생성

    -- example.org 는 물론이고. dev.example.org 도 쿠키 접근.

--생략 : 현재 문서 기준 도메인만 적용.

 -- 도메인 지정을 생략하면.  example.org 에서만 쿠키 접근.

 

** 쿠키 - 경로

-- ex ) path = /home

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

     -- 일반적으로 path=/ 루트로 지정

 

** 쿠키 - 보안   ( Secure, HttpOnly, SameSite )

--Secure 

        -- 쿠키는 http , https 구분하지않고 전송

        -- Secure 적용하면  https인 경우에만 전송

--HttpOnly

        -- XSS공격방지

        -- 자바스크립트에서는 접근불가

        -- HTTP 전송에만 사용

--SameSite

        -- XSRF 공격방지

        -- 요청 도메인과 쿠키에 설정된 도메인이 같은경우만 쿠키전송

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

 

'Spring > HTTP 웹 기본지식' 카테고리의 다른 글

HTTP 헤더 ( 검증헤더, 조건부 요청 )  (0) 2023.04.10
HTTP 헤더 ( 캐시 )  (0) 2023.04.10
HTTP 상태 코드 ( 에러코드 )  (0) 2023.04.08
HTTP API 설계  (0) 2023.04.07
HTTP 메서드 활용  (0) 2023.04.07
Comments