✏️ HTTP 간단 정리

케이·2022년 7월 24일
5

학습기록

목록 보기
2/5
post-thumbnail

틀린 내용이 있다면 언제든 지적해주세요. 감사합니다 🙇🏻‍♀️

박재성님의 넥스트 스텝 미션을 구현하면서 HTTP 관련해서 학습을 진행했다. 평소에 대충 알고 있고 넘어가는 부분들이 있어 중요하다고 생각한 부분들을 정리해 보았다.

HTTP란?

WWW(World Wide Web)상에서 웹 클라이언트와 웹 서버간의 커뮤니케이션을 가능하게 하는 프로토콜이다.
여기서 웹 클라이언트는 브라우저(크롬, 사파리 등)고 서버는 클라우드에 있는 컴퓨터라고 보면 된다.
클라이언트와 서버의 커뮤니케이션은 request와 response로 이루어 지는데 그 과정은

  1. 클라이언트는 HTTP Request를 보낸다.
  2. 웹 서버는 request를 받는다.
  3. 서버는 request를 처리하기 위해 어플리케이션을 실행한다.
  4. 서버는 HTTP Response를 브라우저에게 리턴한다.
  5. 클라이언트는 response를 받는다.

HTTP 헤더

HTTP Request 메시지


크게 Request Line과 Request Header 그리고 Body로 구성되어 있다.

  • Request Line: (위의 그림을 예를 들면) 어떠한 메소드(GET)를 통해 무엇을(/doc/test.html)을 어떤 방식(HTTP/1.1)로 요청했는지에 대한 내용을 담고 있다.
  • Request Line 아래로는 다양한 Reqeust Header들이 있다.
  • Request Header는 필드 이름: 필드 값 으로 이루어져 있다.

HTTP Response 메시지


크게 Status Line, Response Header 그리고 Body로 구성되어 있다.

  • Status Line: HTTP Version과 Status code를 담는다.

(자주 볼 수 있는) HTTP 응답코드

200 OK

  • 요청 성공 상태 응답 코드

302 Found

  • HTTP의 302 Found Redirect 상태 응답 코드
  • 클라이언트가 요청한 리소스가 Location 헤더에 주어진 URL에 이동되었음을 가리킨다.
  • 해당 URL 페이지로 리다이렉트 되더라도 그에 대한 링크가 바뀌지는 않는다.

(당황하지말자) 403 Forbidden

  • 클라이언트 오류 상태 응답 코드. 서버에 요청이 전달되었으나 권한 때문에 거절된 상황이다.
  • CORS 내용도 함께 읽어보는 것이 좋다. (참고: 우당탕탕CORS정리)

404 Not Found

  • 클라이언트 응답 오류로 서버가 요청받은 리소스를 찾을 수 엇다는 것을 의미한다.

500 Internal Server Error

  • 요청을 처리하는 과정에서 서버가 예상하지 못한 상황에 놓인 것을 나타낸다.

HTTP Redirect

HTTP Redirect는 3xx 상태 코드를 지닌 응답.
Redirect 응답을 수신한 브라우저는 제공된 새로운 URL을 사용한다.
Redirection은 크게 세 가지로 분류 되는데 영속적 Redirection, 일시적 Redirection, 특수 Redirection이 있다.

  1. 영속적 Redirection
  • 301 (Moved Permanently): 웹 사이트를 재편성 할 때 쓴다.
  • 308 (Permanent Redirect): GET이 아닌 링크/동작을 지닌, 웹 사이트를 재편성 할 때 쓴다.
  1. 일시적 Redirection
  • 302 (Found): 웹 페이지가 예측하지 못한 이유로 일시적으로 이용 불가능 할 때 사용. 링크 갱신하지 않음.
  • 303 (See Other): 동작을 다시 촉발시키는 페이지 리프레시를 막기 위해 PUT 또는 POST에 사용.
  • 307 (Temporary Redirect): 웹페이지가 예측못한 이유로 일시적으로 이용 불가능 할 때 사용. GET이 아닌 경우 302보다 더 좋음.
  1. 특수 Redirection
  • 300 (Multiple choice): 본문의 HTML 페이지 내에 선택지가 나열 됨. 많지 않음.
  • 304 (Not Modified): 캐시 리프레시.

HTTP 쿠키

위의 HTTP Response 메시지를 살펴본 것처럼 서버에서 Http Response를 보낼 때 헤더에 Set-Cookie를 포함해 전송할 수 있다.
쿠키는 보통 브라우저에 저장되고 만료일이나 지속시간도 설정 할 수 있다.

예시) Http Response

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: logined=true
...

이 후에는 서버로 전송되는 모든 요청에 브라우저는 Cookie를 포함해서 보낼 수 있다.

예시) HTTP Request

GET /login.html HTTP/1.1
Cookie: logined=true

참고

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

12개의 댓글

comment-user-thumbnail
2022년 7월 24일

잘보고 갑니닷 케이~ 열심히 하고 계시는 군여~~

1개의 답글
comment-user-thumbnail
2022년 7월 24일

잘봤습니다 케이 ! 👍

1개의 답글
comment-user-thumbnail
2022년 7월 24일

오오 케이 HTTP 정말 잘 정리해주셨네용!! 👍👍 덕분에 많이 배웠습니다~!!

1개의 답글
comment-user-thumbnail
2022년 7월 24일

오- 잘 보구 갑니다 👍👍

1개의 답글
comment-user-thumbnail
2022년 7월 25일

영한님 강의 누가봄 ㅋㅋ 든든하고 뜨뜻한 케형님 글 하나 보고말지;;

1개의 답글
comment-user-thumbnail
2022년 8월 1일

영속성 일시적 redirection이 있다는 걸 처음 알았습니다; ;;; HTTP에 대해서 알짜배기만 있네요! 내용도 잘 읽히고 좋네욤 ㅎㅎ 잘 보고갑니닷 케이!!

답글 달기