HTTP
HTTP
- HyperText Transfer Protocol
- 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약)
- 웹상에서 서버끼리 통신을 할 때 규정해 놓은 통신 형식 (통신 구조)
- 프론트앤드 서버와 클라이언트간의 통신 / 백앤드와 프론트앤드 서버간의 통신에 사용
- TCP/IP 기반
HTTP 핵심 요소
request 와 response
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조
Stateless
- 각각의 요청/응답은 독립적
- 이 전의 요청과 응답에 대해 알 수 없음
http는 stateless여서 만약 이전의 요청/응답으로 로그인을 했어도 정보를 알 수 없음
따라서 응답에 필요한 정보를 모두 포함(첨부)해서 요청 해야함
이러한 정보를 쿠키 / 세션 등에 저장하고 있다가 요청이 오면 여기서 정보를 얻어서 첨부해서 보냄!
HTTP Request 구조
Start line, Headers, Body로 구성
1. Start line
HTTP request의 첫 줄
HTTP Methond, Request target, HTTP Version으로 구성되어있음
예시
GET /search HTTP/1.1
위와 같은 부분이 start line
1-1. HTTP Method
요청이 의도한 것을 정의하는 부분 (GET, POST, PUT, DELETE 등)
예시에서 GET이 메소드
1-2. Request target
요청이 전송되는 목적지 (목표 url)
위의 예시에서 /search 부분이 타겟
1-3. HTTP Version
말 그대로 HTTP 버젼
위의 예시에서 HTTP/1.1 부분이 버젼
2. Headers
요청에 대한 부가 정보가 들어감
Key:Value 값으로 이루어져 있음
예시) HOST: google.com 면 Key = HOST, Value = google.com
start line의 request target과 headers의 host를 조합하면 url 주소가 나옴
예시) google.com/login ( Host=google.com , request target=/login )
자주 사용하는 Headers
- Host
요청이 전송되는 target의 host url - User-Agent
요청을 보내는 클라이언트의 대한 정보 (예시 : 웹브라우저에 대한 정보) - Accept
해당 요청이 받을 수 있는 응답(response) 타입 - Connection
해당 요청이 끝난후에 클라이언트와 서버가 네트워크 커넥션을 유지 할 것인지 아니면 끊을 것인지에 대해 지시하는 부분 - Content-Type
해당 요청이 보내는 메세지 body의 타입 (예시 : JSON을 보내면 application/json) - Content-Length:
메세지 body의 길이
3. Body
- 해당 request의 실제 메세지 / 내용
- Body가 없는 request도 있음 ( GET request는 body가 없는 경우가 많음)
HTTP Response 구조
request와 마찬가지로 3부분으로 구성되어 있음
HTTP response의 구조는 Status line, Headers, Body
1. Status line
예시
아래의 예시와 같이 구성되어있음
HTTP/1.1 404 Not Found
1-1. HTTP Version
HTTP 버젼
예시에서 HTTP/1.1가 버젼
1-2. Status code
응답 상태를 나타내는 코드
숫자로 되어있음
위의 예시에서 404가 status code
1-3. Status text
응답 상태를 간략하게 설명해주는 부분
위의 예시에서 Not Found가 status text
2. Headers
- Response의 headers와 동일
- response에서만 사용되는 header 값이 존재
- 예시) User-Agent 대신에 Server 헤더가 사용됨
3. Body
- Response의 body와 일반적으로 동일
- body가 없는 response도 있음
HTTP Methods
GET
데이터를 달라고 요청하는 메소드
POST
데이터를 생성/수정할 때 요청하는 메소드
예시) 회원가입을 할 때 데이터를 POST로 생성
PUT
POST와 비슷한 메소드 / 데이터를 생성할 때 쓰임
요즘은 잘 사용하지 않는 추세
예시) 내 정보를 추가할 때 사용
DELETE
데이터를 삭제할 때 사용하는 메소드
HTTP Status Code
200 OK
문제없이 실행 되었을때 보내는 코드
301 Moved Permanently
해당 URI가 다른 주소로 바뀌었을때 보내는 코드
400 Bad Request
해당 요청이 잘못된 요청일 때 보내는 코드
주로 요청에 포함된 input 값에 잘못된 값들이 보내졌을 때 사용되는 코드
예시) 전화번호를 보내야 되는데 text가 보내진 경우
401 Unauthorized
유저가 해당 요청을 진행하기 위해서는 먼저 로그인 / 회원 가입 등이 필요하다는 것을 나타낼 때 쓰이는 코드
403 Forbidden
유저가 해당 요청에 대한 권한이 없다는 뜻
404 Not Found
요청된 uri가 존재 하지 않는다는 뜻
500 Internal Server Error
서버에서 에러가 났을 때 사용되는 코드
'Wecode_Session > WEB' 카테고리의 다른 글
Web의 동작 원리 (1) | 2020.04.04 |
---|
댓글