[TIL] HTTP

나른한 개발자·2022년 1월 7일
0

studylog

목록 보기
23/45

HTTP(Hyper Text Transfer Protocol)

HTML 문서를 주고 받는 통신 규약. 메세지 형태의 요청과 응답의 방식으로 소통한다. 메세지 방식의 단점->요청이 유출될 위험성

stateless(무상태 프로토콜)

http 통신의 독립적으로 이루어져 과거 http통신 결과를 보존하지 않는다. 따라서 요청할 때마다 마치 새로운 요청인 것처럼 요청에 필요한 정보를 항상 같이 전달한다.

매 요청마다 필요한 정보를 다 전달해야 하지만 요청에 항상 필요 정보들이 함께 있기 때문에 어떠한 서버이더라도 요청을 처리할 수 있다는 장점이 있다.

(만약 http가 stateful하다면 응답해 주는 서버가 바뀔 경우 저장한 요청을 공유해야 하며 또한 요청을 저장할 저장 공간이 필요하다.)


그렇다면 상태가 유지되어야하는 로그인 같은 경우에는 어떻게 해야할까?

상태를 저장하지 않는 특성 때문에 매 요청마다 로그인 정보를 보내주는 것이 맞지만 그렇기엔 보안상의 이유 등이 있기 때문에 토큰(키카드 같은 고유의 id)으로 대체한다. (자동 로그인의 경우 로컬 스토리지나 세션 스토리지에 토큰을 저장한다.

request / response 구조

요청 구조: start line, headers, body 구조로 나뉜다.

  • startline: http method(get/post 등 어떤 요청을 하는지) request tartget(요청이 전송되는 목표 url), http version.
  • headers: body에 대한 메타데이터. key와 value로 이루어짐.
  • body: 실제 요청에 대한 내용

응답 구조: status line, hearders, body로 나뉨.

  • status line: http version. status code, status text
  • headers: 응답의 메타 데이터 담겨있는 부분
  • body: 응답을 해줄 내용

Http request methods

  • get: 데이터를 받아오기만 할때 사용.
  • post: 데이터 생성 및 수정. body에 생성하거나 수정할 내용을 담음. (사실 post는 get/delete 다 가능 하긴함) e.g., 게시글 작성, 회원 가입 등
  • delete: 서버에 저장된 특정 데이터를 삭제할 때 사용. e.g., 댓글 삭제, 회원 탈퇴 등

response status code의 종류

sucess

  • 200: OK. 통신이 잘 됏을 떄
  • 201: Created. 요청이 완료되었으며 자원이 생성된 경우

error

  • 400: bad request. 보낸 요청이 손상되었을 때 생기는 오류
  • 401: unauthorized. 클라이언트가 인증되지 않았거나 인증 정보가 부족하여 요청이 거부된 경우.
  • 403: forbidden. 유효한 url이나 서버가 클라이언트의 접근을 거부할 경우.
  • 404: not found. 존재하지 않거나 유효하지 않은 url을 탐색한 경우.

server error

  • 500: internal server error. 서버가 터졌다.

내가 잘 사용하는 웹 페이지의 개발자도구(네트워크 탭) 확인해보기

상태 코드는 개발자 도구 - 네트워크 탭에서 확인할 수 있다.

페이지 리소스와 상태 코드의 목록을 확인할 수 있으며 상태가 200으로 나와있는 것으로 보아 모든 요청들이 완료가 되었음을 알 수 있다.

profile
Start fast to fail fast

0개의 댓글