웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜
HTTP 요청응답메시지 구조(Request , Response)
start-line(요청내용) | header | body
start-line: HTTP 메소드 / Request target / HTTP version 으로 구성되어 있음
header(key:value 쌍으로 구성):
Host : 요청이 전송되는 target의 호스트 URL 주소
User-Agent : 요청을 보내는 클라이언트의 정보 ex : 웹 브라우저의 정보
Accept
/*
로 지정Connection
해당 요청이 끝난 후에 클라이언트와 서버간의 연결을 계속 유지할 것인지 끊을 것인지 알려주는 헤더
(keep-alive : 네트워크 연결을 유지, close : 연결닫기)
Content-Type
Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보
HTTP Method
HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도
GET(서버 데이터 조회용, 서버 내 데이터 불변)
서버로부터 정보 조회
POST( 서버의 상태나 데이터 변경용) ⇒ 주로 생성용
POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송합니다. 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다
HEAD
PUT( 서버의 상태나 데이터 수정용)
DELETE(`` 삭제용)
//CRUD (Create : POST), (Read: GET) ,(Update: PUT) , (Delete:DELETE)
HTTP Session
일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술이다.
즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태이다. 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술
동작방식
웹브라우저가 서버에 요청 ,서버가 해당 웹브라우저(클라이언트)에 유일한 ID(Session ID)를 부여함, 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송
쿠키에 Session ID를 TAEKID 라는 이름으로 저장 Set−Cookie: TAEKID=takef
웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송 Cookie: TAEKID=takef
서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답
세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지한다.즉, 상태 정보를 유지하는 수단은 쿠키 이다.
HTTP Cookie
HTTP 프로토콜의 특징
비연결지향과 상태정보 유지안함의 특징을 가지고 있는 HTTP의 특징을 보완하기 위해 세션과 쿠키의 기술이 사용됨