HTTP 구조 및 핵심 요소
하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조" 라고 보면 된다.프론트앤드 서버와 클라이언트간의 통신에 사용
velog.io
[HTTP ( HyperText Transfer Protocol )]
1. 하이퍼텍스트 문서를 교환하기 위해 만들어진 통신규약
2. 프론트앤드 서버와 클라이언트 간의 통신에 사용
3. 백앤드와 프론트앤드 서버 간에의 통신에도 사용
4. TCP/IP 기반
[HTTP 통신방식]
1. 요청/응답(request/response) 구조
1) 클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조
클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어진다.
2. HTTP는 STateless(상태저장을 하지 않음)다.
1) 요청이 오면 그에 응답을 할 뿐, 여러 요청/응답끼리 연결되어 있지 않다. 즉, 각각의 요청/응답은 독립적이다.
(1) 그래서 여러 요청과 응답의 진행과정이나 데이터가 필요할 때는 쿠키나 세션 등을 사용
[HTTP Request 구조 - StartLine, Headers, Body]
1. Start Line
1) HTTP Method
(1) 해당 request가 의도한 action을 정의하는 부분
(2) GET, POST, PUT, DELETE, OPTIONS 등등이 있다.
2) Request target
(1) 해당 request가 전송되는 목표 uri ( ex : /login)
3) HTTP Version
(1) 사용되는 HTTP 버젼
2. Headers
1) 해당 request 에 대한 추가 정보(additional information)를 담고 있는 부분
(ex : request 메시지 body의 총 길이(Content-length) 등
2) Key:Value 값으로 되어 있다.
3) Header 정보
(1) Host
ㄱ) 요청이 전송되는 target 의 host url (ex : google.com)
(2) User-Agent
ㄱ) 요청을 보내는 클라이언트의 대한 정보 (ex : 웹브라우저 정보)
(3) Accept
ㄱ) 해당 요청이 받을 수 있는 응답(response) 타입
(4) Connection
ㄱ) 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 커넥션을 유지할 것인지
아니면 끊을것인지에 대해 지시하는 부분
(5) Content-Type
ㄱ) 해당 요청이 보내는 메시지 body의 타입(ex: application/json)
(6) Content-Length
ㄱ) 메시지 body의 길이
3. Body
1) 해당 request의 실제 메시지/ 내용
(1) GET request 들은 대부분 body가 없는 경우가 많음.
[HTTP Response 구조 - Status Line, Headers, Body]
1. Status Line
1) Response의 상태를 간략하게 나타내주는 부분
2) HTTP 버젼, Status code, Status text 로 구성
2. Headers
1) Response의 headers와 동일, 다만 response에서만 사용되는 header 값 존재(Server 헤더 등)
3. Body
1) Response의 body 와 일반적으로 동일
[자주 쓰이는 HTTP Status Code]
1. 200 OK
1) 문제없이 실행
2. 301 Moved Permanently
1) 해당 URI가 다른 주소로 바뀌었을 때 보내는 코드
3. 400 Bad Request
1) 해당 요청이 잘못된 요청일 때 보내는 코드
2) 주로 요청에 포함된 input 값들이 잘못된 값들이 보내졌을 때 사용되는 코드
ex) 전화번호를 보내야 되는데 text가 보내졌을 때
4. 401 Unauthorized
1) 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원 가입을 하는 등이 필요하다는 것을 나타내려 할 때
5. 403 Forbidden
1) 유저가 해당 요청에 대한 권한이 없다
6. 404 Not Found
1) 요청된 uri 가 존재 하지 않는다.
7. 500 Internal Server Error
1) 서버에서 에러가 났을 때 사용되는 코드
'IT 개념' 카테고리의 다른 글
내가 정리해보는 Spring 게시판 만드는 순서(정답X) (0) | 2021.06.23 |
---|---|
HTTP ? HTTPS? (0) | 2021.06.22 |
CSRF (Cross-Site request forgery) (0) | 2021.06.21 |
Spring Security (0) | 2021.06.21 |
Forward, Redirect (0) | 2021.06.18 |