HTTP

Jina·2020년 4월 8일
0

Session

목록 보기
4/12

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

서버에서 에러가 났을 때 사용되는 코드

0개의 댓글