HTTP(Hyper Text Transfer Protocol 통신
웹상에서의 정보를 주고 받는 프로토콜 통신 규약
HTTP 통신 주요 특징 목차
- 요청 (Request)
- 응답 (Response)
- Stateless
- 쿠키/세션
- 요청/응답 예시
요청 (Request)
- 웹 브라우저를 통해 서버에 어떠한 정보를 요청하는 것 (프론트 => 서버)
- 요청하는 정보 자체는 Request 객체가 관리한다.
응답 (Response)
- 웹 브라우저의 요청에 대해 서버가 응답하는 것 (서버 => 프론트)
- 응답하는 정보 자체는 Respons 객체가 관리한다.
Stateless
- 웹은 기본적으로 클라이언트와 서버간에 서로 직접적인 연결이 되어 있지 않다.
- 각각의 HTTP 통신은 독립적이며, 그 전에 처리된 HTTP 통신에 대해 알 수 없다.
- 따라서 서버에서 보낸 HTTP 요청에 대해 클라이언트는 독립적으로 응답만 보내면됨
- HTTP의 Stateless를 보완(통신상태 저장, 유지)하기 위한 쿠키(Cookie), 세션(Session)등이 존재
쿠키 (Cookie)
- 웹 브라우저(클라이언트)가 웹 사이트에서 보내온 정보를 저장 (Token을 쿠키에 저장)
세션 (Session)
- HTTP 통신상에서 필요한 정보를 웹 서버가 저장하는 메커니즘
- 세션/쿠키/토큰 설명 링크
요청 (Request) 메시지 구조
구분 | 역할 | example |
1. Start Line | HTTP Method + Request target + HTTP Version |
HTTP Method : 요청이 의도한 액션. : GET, POST, PUT, PATCH, DELETE Request target: 전송 목표 url HTTP Version: 사용되는 HTTP 버전 (주로 1.1 버전이 널리 쓰임) |
2. Headers | 요청에 대한 추가 정보(=메타 데이터) | Headers:{ Host: 요청을 보내는 목표(기본) 주소 (ex. www.apple.co.kr) User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox) Content-Type: 요청 Body 타입 (ex. application/json, text/csv, image/png..) Accept : 받을 수 있는 응답(response) Body의 타입 Content-Length: body 내용의 길이 Authorization: 회원의 인증/인가 처리를 위한 로그인 토큰이 담기는 곳 } |
3. Body | 실제 데이터 부분 | POST /payment-sync HTTP/1.1 Accept: application/json Connection: keep-alive Content-Length: 83 Content-Type: application/json { 'uid:'a123', 'status':'paid' } |
응답 (Response) 메시지 구조
구분 | 역할 | example |
1. Start Line | HTTP Method + Request target + HTTP Version |
HTTP 응답 메시지의 상태 알려줌 HTTP Version: 사용되는 HTTP 버전 (주로 1.1 버전이 널리 쓰임) Status Code : HTTP 응답 상태 숫자 코드 Status Text : 숫자 코드 보완용 Text |
2. Headers | 요청에 대한 추가 정보(=메타 데이터) 요청의 헤더와 유사 |
Headers:{ Host: 요청을 보내는 목표(기본) 주소 (ex. www.apple.co.kr) User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox) Content-Type: 요청 Body 타입 (ex. application/json, text/csv, image/png..) Accept : 받을 수 있는 응답(response) Body의 타입 Content-Length: body 내용의 길이 Authorization: 회원의 인증/인가 처리를 위한 로그인 토큰이 담기는 곳 } |
3. Body | 실제 데이터 부분 (요청과 거의 동일) |
HTTP/1.1 404 Not Found Connection : close Content-Length : 1573 Content-Type : text/html; charset=UTF-8 Body: { "message": "Failed" "token": "ksdkfnknsdjf" (암호화된 유저 정보) } |
'기술 정리 & CS > Web 일반' 카테고리의 다른 글
[WEB 일반] MIME Type, Content-Type 이란 (0) | 2024.06.23 |
---|---|
[Web 일반] 실시간 통신 (Pooling, Long Pooling, Streaming, WebSocket) 비교 (0) | 2022.09.19 |
[Web 기본] URI, URL, URN 차이 (0) | 2022.09.05 |
[Web 기본] HTTP 메소드 (+ PRG 패턴) (0) | 2022.08.26 |
[Web 기본] HTTP 상태 코드 정리 (0) | 2022.08.26 |