[React 심화] HTTP란?

조아영·2025년 3월 10일

📌

HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받기 위한 프로토콜(데이터 통신을 원활하게 하기 위한 통신 규약)
클라이언트와 서버 간의 요청과 응답을 정의.

◼ 개념

HTTP는 클라이언트-서버 모델을 기반으로 동작.
클라이언트가 요청을 보내면 서버가 응답을 반환. 요청과 응답은 텍스트 기반 메시지로 구성됨.

◼ 특징

  • 무상태성
    HTTP는 상태 저장하지 않음.
    각 요청은 독립적으로 처리. 이전 요청 정보 기억하지 않음. 이것을 무상태(stateless)라고 함.
  • 확장성
    HTTP는 다양한 확장 헤더를 추가하여 기능 확장 가능.
  • 유연성
    다양한 데이터 형식 전송 가능. 텍스트, 이미지, 비디오 등 다양한 형식 지원.

◼ 메시지 구조

HTTP 메시지는 요청(Request)과 응답(Response)으로 구성됨.

요청메시지

클라이언트가 서버에 데이터 요청 시 사용.

  • 요청 라인
    메서드(GET, POST, 등), URL, HTTP 버전
  • 헤더(Header)
    요청의 추가 정보(메타데이터)를 담고 있어요. 브라우저 정보, 인증 정보 등.
  • 본문(Body)
    선택적 요소. 주로 POST 요청에서 사용.

예시

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

요청 헤더와 인증 정보

요청 헤더에 인증 정보 포함 이유

서버는 요청을 보낸 사용자가 누구인지 확인이 필요함. 이 과정을 인증(Authentication)이라고 함.
인증을 통해 사용자 식별을 하고 사용자에게 권한이 있는지 확인함.

요청 헤더에 인증 정보 포함 방법

요청 헤더는 요청에 대한 추가 정보 전달 용도.
헤더에 인증 정보를 포함해서 서버가 요청을 받았을 때 해당 정보를 통해 사용자 인증 처리.

GET /protected-resource HTTP/1.1
Host: example.com
**Authorization: Bearer <Access-Token>**

Access-Token은 로그인한 사용자임을 증명(로그인했음을 알려주는 정도)하는 키 역할 수행함.

응답 메시지

서버가 클라이언트 요청에 대한 결과 반환 시 사용.

  • 상태 라인
    HTTP 버전, 상태코드(200, 404, 등), 상태 메시지
  • 헤더(Header)
    응답에 대한 추가 정보 전달 역할 수행. 콘텐츠 타입, 데이터 길이 등 포함 가능.
  • 본문(Body)
    선택적 요소. 주로 응답 데이터.

예시

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1354

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

◼ 상태코드

HTTP 상태코드는 서버가 클라이언트 요청 처리 결과를 나타내는 값.세 자리 숫자로 구성. 첫 번째 자리 숫자를 기준으로 의미 구분 가능.

1xx : 정보

  • 100 Continue 요청 일부를 서버가 받았음. 나머지 계속 보내라는 의미.

2xx : 성공

  • 200 OK 요청 정상 처리 완료.
  • 201 Created 요청 성공 및 새로운 리소스 생성 완료.

3xx : 리다이렉션

  • 301 Moved Permanently
    요청 리소스가 새로운 URL로 영구 이동.
  • 302 Found 요청 리소스가 새로운 URL로 임시 이동.

4xx : 클라이언트 오류

  • 400 Bad Request 잘못된 요청.
  • 401 Unauthorized 인증 필요 상태.
  • 404 Not Found 요청한 리소스를 찾을 수 없음.

5xx : 서버 오류

  • 500 Internal Server Error 서버가 요청을 처리하는 동안 오류 발생.
  • 502 Bad Gateway 서버가 게이트웨이 또는 프록시 역할을 하는 서버로부터 유효하지 않은 응답을 받음.

0개의 댓글