반응형
HTTP 메세지
메시지의 흐름
- 인바운드client => 메시지 => server (인바운드)
- 아웃바운드client <= 메시지 <= server (아웃바운드)
- 업스트림모든 메시지의 발송자는 수신자의 업스트림
- 다운스트림요청, 응답의 모든 메세지는 _다운스트림_으로 흐름
메시지의 각 부분
시작줄 | HTTP/1.0 200 OK
헤더 | Content-type: text/plain
Content-length: 19
본문 | Hi! I'm a message!
- 시작줄 : 어떤 메시지인지 서술
- 헤더 블록 : 속성
- 본문 : 데이터를 담음
메시지 문법
1. Request 메시지의 형식
<Method> <요청 URL> <버전>
<header>
<Entity 본문>
2. Response 메시지의 형식
<HTTP version> <status code> <사유 구절>
<header>
<Entity 본문>
- Method : client => server 에게 수행해주길 바라는 동작 -
GET
,POST
,DELETE
... - 버전 : 이 메시지에서 사용중인 HTTP 버전 -
HTTP/<major><minor>
형식 - status code : 요청 중 무엇이 일어났는지 설명 -
200
,300
,404
... - 사유 구절(reason-phrase) : status code의 의미를 설명해주는 문구 -
NOT OK
,OK
... - header : 요청, 응답 메시지에 추가 정보를 더하는 영역
- Entity 본문 : 데이터 블록
Method
_Method_는 서버에게 무엇을 해야하는지 알려줍니다.
GET /specials/saw-blade.gif HTTP/1.0 # method :: GET
메서드 | 설명 | 본문 |
---|---|---|
GET |
서버에서 문서 가져오기 | X |
HEAD |
서버에서 문서에 대한 헤더만 가져오기 | X |
POST |
서버가 처리해야 할 데이터를 보냄 | O |
PUT |
서버에 요청 메시지의 본문을 저장 | O |
TRACE |
메시지가 프락시를 거쳐 서버에 도달하는 과정 추적 | X |
OPTIONS |
서버가 어떤 메서드를 수행할 수 있는지 확인 | X |
DELETE |
서버에서 문서 제거 | X |
Status code
상태 코드 는 클라이언트에게 일어난 일에 대한 상태를 알려줍니다.
HTTP/1.0 200 OK # 상태 코드 : 200
전체 범위 | 정의된 범위 | 분류 |
---|---|---|
100 ~ 199 |
100 ~ 101 |
정보 |
200 ~ 299 |
200 ~ 206 |
성공 |
300 ~ 399 |
300 ~ 305 |
리디렉션 |
400 ~ 499 |
400 ~ 415 |
클라이언트 에러 |
500 ~ 599 |
500 ~ 505 |
서버 에러 |
Header
HTTP 헤더 필드에는 요청/응답 메시지에 추가 정보를 더합니다. 그들은 기본적으로 이름/값 쌍의 목록입니다.
분류 | 설명 |
---|---|
일반 헤더 | 요청, 응답 양쪽에 모두 나타날 수 있음 |
요청 헤더 | 요청에 대한 부가 정보를 제공 (클라이언트가 받고자하는 타입 등) |
응답 헤더 | 응답에 대한 부가 정보 제공 (서버가 실행하고있는 정보 등) |
Entity 헤더 | 본문 크기, 콘텐츠, 리소스(데이터) 그 자체를 서술 |
확장 헤더 | 명세에 정의되지 않은 새로운 헤더 |
헤더의 예 설명 Date: Tue, 3 Oct 1997 02:16:03 GMT
서버가 응답을 만들어낸 시각 Accept: image/gif, image/jpeg, text/html
클라이언트는 GIF, JPEG, HTML 를 받음 Accept: */*
클라이언트는 서버가 보내는 모든 미디어 타입을 받음 Server: Tiki-Hut/1.0
서버 헤더가 Tiki-Hut 1.0
과 대화하고있다는 정보를 클라이언트에게 제공Contet-length: 15040
15,040 바이트의 데이터를 포함한 Entity 본문 Content-type: image/gif
Entity 본문은 GIF 이미지
일반 헤더 종류
헤더 | 설명 |
---|---|
Connection |
클라이언트 - 서버 가 요청/응답 연결하는 것에 대한 옵션 지정 가능 |
Date * |
서버에서 메시지가 언제 만들어졌는지에 대한 날짜/시간 제공 |
MIME-Version |
발송자가 사용한 MIME 버전 제공 |
Trailer chunked transfer |
인코딩된 메시지의 끝 부분에 위치한 헤더들의 목록 나열 |
Upgrade |
발송자가 '업그레이드' 하길 원하는 새 버전이나 프로토콜 제공 |
Via |
어떤 중개자(프락시, 게이트웨이) 를 거쳐왔는지 보여줌 |
요청 헤더 종류
헤더 | 설명 |
---|---|
Client-IP * |
클라이언트가 실행된 컴퓨터의 IP 제공 |
From |
클라이언트 사용자의 메일 주소 제공 |
Host |
요청의 대상이 되는 서버의 호스트 명, 포트 제공 |
Referer |
현재의 요청 URI 가 들어있었떤 문서의 URL 제공 |
Accept |
서버에게 서버가 보내도 되는 미디어 종류를 알려줌 |
Accept-Charset |
서버에게 서버가 보내도 되는 문자 집합을 알려줌 |
Authorization |
클라이언트가 서버에게 제공하는 인증 그 자체에 대한 정보를 담음 |
Cookie |
클라이언트가 서버에게 토큰을 전달할 때 사용. 보안에 영향을 줄 수 있음 |
프락시 요청 헤더 | |
Max-Forwards |
요청이 원 서버로 향하는 과정에서 다른 프락시/게이트웨이로 전달될 수 있는 횟수. TRACE 메서드와 함께 사용 |
Proxy-Authorization |
Authorization 과 같으나 프락시에서 인증을 할 때 사용 |
Proxy-Connection |
Connection 과 같으나 프락시와 연결을 맺을 때 사용 |
... | ... |
Entity 헤더
헤더 | 설명 |
---|---|
Content-Base * |
본문에서 사용된 상대 URL 을 계산하기위한 기저 URL |
Content-Encoding |
본문에 적용된 인코딩 |
Content-Length |
본문의 길이/크기 |
Content-Type |
이 본문이 어떤 종류의 객체인지 |
반응형
'FRONTEND > WEB' 카테고리의 다른 글
220503 화 Request Payload 를 숨기는 방법? (0) | 2022.05.03 |
---|---|
210603_Short Polling vs Long Polling (0) | 2021.06.03 |
XSS 공격 및 CORS - 해결방법 (0) | 2021.05.10 |
Cookie, Session, Token 의 차이점 (3) | 2021.05.09 |
댓글