본문 바로가기
BE/Spring

HTTP

by soohykim 2025. 4. 10.
728x90
반응형

📒 HTTP 웹 기본 지식

📕 1. 인터넷 네트워크

1) IP (인터넷 프로토콜)

  • IP 역할
    • 지정한 IP Address에 데이터 전달
    • 패킷(Packet)이라는 통신 단위로 데이터 전달
  • IP 한계
    • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 비신뢰성 : 중간에 패킷이 사라지거나 패킷이 순서대로 안옴
    • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상임

2) TCP, UDP

  • TCP 특징
    • 전송 제어 프로토콜 (Transmission Control Protocol)
    • 연결지향 (TCP 3 way handshake, 가상 연결)
    • 데이터 전달 보증
    • 순서 보장
    • 신뢰할 수 있는 프로토콜
    • 현재 대부분 TCP 사용
  • TCP 3way handshake
  • UDP 특징
    • 사용자 데이터그램 프로토콜 (User Datagram Protocol)
    • IP와 유사 (+PORT, 체크섬 추가됨)
    • 애플리케이션에서 추가 작업 필요
    • 연결지향X (TCP 3 way handshake X)
    • 데이터 전달 보증X
    • 순서 보장X
    • 데이터 전달 및 순서가 보장되지 않고, 단순/빠름

📖 참고 📖 인터넷 프로토콜 스택의 4계층

  • 애플리케이션 계층 : HTTP, FTP
  • 전송 계층 : TCP, UDP
  • 인터넷 계층 : IP
  • 네트워크 인터페이스 계층
  • TCP/IP 패킷 정보

4) PORT

  • 같은 IP 내에서 프로세스 구분 역할
  • 종류
    • 1024 ~ 65535 : 할당 가능
    • 0 ~ 1023 : 잘 알려진 포트
      • FTP (20, 21)
      • TELNET (23)
      • HTTP (80)
      • HTTPS (443)

5) DNS (Domain Name Server)

  • IP를 쉽게 사용하기 위헤 도메인명 변환해주는 서버

📕 2. URI와 웹 브라우저 요청 흐름

1) URI (Uniform Resource Identifier)

  • URI 개념
    • Uniform : 리소스 식별하는 통일된 방식
    • Resource : 자원, URI로 식별할 수 있는 모든 것
    • Identifier : 다른 항목과 구분하는데 필요한 정보
    • 로케이터(locator), 이름(name) 으로 분류
  • URL 문법
    • scheme://[userinfo@]host[:port][/path][?query][#fragment]
      • scheme : 프로토콜 (http : 80포트, https : 443포트 사용, 포트 생략 가능)
      • userinfo@ : URL에 사용자 정보를 포함해서 인증 (사용X)
      • host명 : 도메인명 또는 IP주소 직접 사용
      • port : 접속 포트 (생략 가능)
      • path : 리소스 경로, 계층적 구조
      • query : 웹 서버에 제공하는 문자 형태의 파라미터, key = value 형태 (?로 시작, &로 추가)
      • fragment : html 내부 북마크 등에 사용 (서버에 전송 정보X)
    • 🗒️ 예시 : https://www.google.com:443/search?q=hello&hl=ko
      • https : 프로토콜
      • www.google.com : 호스트명
      • 443 : 포트 번호
      • /search : 경로
      • q=hello&hl=ko : 쿼리 파라미터

📖 참고 📖 URI, URL, URN 차이

  • URL (locator) : resource가 있는 위치를 지정
  • URN (name) : resource에 이름을 부여
  • 위치는 변하지만, 이름은 변하지 않음 (URN만으로 실제 리소스를 찾을 수 있스 방법이 보편화X)

2) 웹 브라우저 요청 흐름

  • (1) URL 입력 : https://www.google.com:443/search?q=hello&hl=ko
  • (2) HTTP 요청 메시지 생성
  • (3) 소켓 라이브러리를 통해 IP, Port 정보 포함해 전달
  • (4) TCP/IP 패킷 생성
  • (5) 도착 서버에서 요청 패킷 속의 HTTP 메시지 확인
  • (6) HTTP 응답 메시지 후 웹 브라우저에 전송
  • (7) 웹 브라우저 HTML 렌더링

📕 3. HTTP 기본

1) 모든 것이 HTTP

  • HTTP 메시지에 모두 담아 전송 (Hyper Text Transfer Protocol)
    • HTML, TEXT
    • IMAGE, 음성, 영상, 파일
    • JSON, XML(API)
    • 서버간 데이터 주고 받을 때 HTTP 사용
  • HTTP 역사
    • HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더X
    • HTTP/1.0 1996년 : 메서드, 헤더 추가
    • HTTP/1.1 1997년 : TCP, 주로 사용
      • RFC2068 (1997)
      • RFC2616 (1999)
      • RFC7230~7235 (2014)
    • HTTP/2 2015년 : TCP, 성능 개선
    • HTTP/3 진행중 : UDP, 성능 개선
  • HTTP 특징
    • 클라이언트 서버 구조
    • 무상태 프로토콜(Stateless), 비연결성
    • HTTP 메시지
    • 단순함, 확장 가능

2) 클라이언트 서버 구조

  • Request Response 구조
    • 클라이언트 : 서버에 요청을 보내고, 응답 대기
    • 서버 : 요청에 대한 결과를 만들어서 응답

3) Stateful (상태 유지), Stateless (무상태)

  • 상태 유지 프로토콜
    • 클라이언트 상태 정보 저장해야함
    • 응답 서버가 바뀌면 상태 정보를 다른 서버에게 미리 알려줘야함
  • 무상태 프로토콜
    • 서버가 클라이언트의 상태를 보존X
    • 응답 서버를 쉽게 바꿀 수 있음
    • 장점 : 클라이언트 요청이 증가해도 서버 대거 투입 가능 ➡ 서버 확장성 높음 (Scale-out)
    • 단점 : 클라이언트가 추가로 데이터 전송 해야함
  • Stateless 실무 한계
    • 무상태로 설계 할 수 없는 경우도 있음
    • 🗒️ 예시
      • 로그인한 사용자의 경우 서버에 상태 유지 (브라우저 쿠키, 서버 세션 사용)
      • 로그인 필요 없는 단순 서비스 소개 화면 무상태

4) 비 연결성 (connectionless)

  • 비 연결성 특징
    • HTTP는 기본 연결을 유지하지 않음 (초 단위 이하의 빠른 속도로 응답)
    • 서버 자원을 최소한으로 사용 가능 (서버는 연결 유지X)
  • 비 연결성 한계
    • TCP/IP 연결을 새로 맺어야 함 (3 way handshake 시간 추가 필요)
    • 웹 브라우저로 사이트 요청시 HTML 뿐만 아니라 JS/CSS/추가 이미지 등 자원 함께 다운로드

      ➡ HTTP 지속 연결로 문제 해결됨

5) HTTP 메시지

  • HTTP 메시지 구조
    • HTTP-message 공식 스펙
      • start-line
        *(header-field CRLF)
        CRLF
        [message-body]
  • (1) 시작 라인
    • request-line : HTTP-method sp(공백) request-target sp(공백) HTTP-version CRLF(엔터)
      • HTTP 메서드
        • 종류 : GET(리소스 조회), POST(요청 내역 처리), PUT, DELETE
        • 역할 : 서버가 수행해야 할 동작 지정
      • 요청 대상
        • absolute-path[?query] (절대경로[?쿼리])
        • 절대경로 = '/'로 시작
    • status-line : HTTP-version sp(공백) status-code sp(공백)reason-phraseCRLF(엔터)
      • HTTP 상태 코드
        • 요청 성공, 실패 나타냄
        • 200 : 성공
        • 400 : 클라이언트 요청 오류
        • 500 : 서버 내부 오류
      • 이유 문구
        • 사람이 이해할 수 있는 짧은 상태 코드 설명 글
  • (2) 헤더
    • field-name "." OWS(띄어쓰기 허용) field-value OWS(띄어쓰기 허용)
      • field-name : 대소문자 구분X
    • 용도
      • HTTP 전송에 필요한 모든 부가정보
      • ex. 메시지 바디의 내용/크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등
      • 필요시 임의 헤더 추가 가능
  • (3) 메시지 바디
    • 용도
      • 실제 전송할 데이터
      • HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능
  • 🗒️ 예시

(2) status-line

  • HTTP 상태 코드
    • 요청 성공, 실패 나타냄
    • 200 : 성공
    • 400 : 클라이언트 요청 오류
    • 500 : 서버 내부 오류
  • 이유 문구
    • 사람이 이해할 수 있는 짧은 상태 코드 설명 글

📕 4. HTTP 메서드

1) HTTP API를 만들어보자

요구사항
➡ API URI 설계 (리소스 식별)

  • URI는 리소스만 식별, 리소스와 해당 리소스를 대상으로 하는 행위를 분리
  • 리소스 : 회원
  • 행위 : 조회, 등록, 삭제, 변경
  • 리소스는 명사, 행위는 동사
  • 행위(메서드)는 어떻게 구분

🗒️ 예시 : 회원 정보 관리 API 생성

  • (1) 요구사항 정리
    • 회원 목록 조회
    • 회원 조회
    • 회원 등록
    • 회원 수정
    • 회원 삭제
  • (2) API URI 설계 (Uniform Resource Identifier)
    • 회원 목록 조회 / read-member-list (X)
    • 회원 조회 / read-member-by-id (X)
    • 회원 등록 / create-member (X)
    • 회원 수정 / update-member (X)
    • 회원 삭제 / delete-member (X)
      ➡ 리소스 : 회원 / members / {id}

📖 참고 📖 리소스

  • 리소스 식별 : 리소스를 URI에 매핑
    • ex. 회원 등록/수정/조회하는 것이 리소스가 아니고, 회원 개념이 리소스

2) HTTP 메서드

  • 종류
    • (1) GET : 리소스 조회
    • (2) POST : 요청 데이터 처리 (주로 등록에 사용)
    • (3) PUT : 리소스 대체 (해당 리소스 없을 경우 생성)
    • (4) PATCH : 리소스 부분 변경
    • (5) DELETE : 리소스 삭제
    • (6) HEAD : GET 동일하지만, 메시지 부분 제외하고 상태 줄 + 헤더만 반환
    • (7) OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드) 설명 (주로 CORS에서 사용)
    • (8) CONNECT : 대상 자원으로 식별되는 서버에 대한 터널 설정
    • (9) TRACE : 대상 리로스에 대한 경로를 따라 메시지 루프백 테스트 수행

(1) GET

  • 개념
    • 리소스 조회
    • 서버에 전달하려는 데이터를 query(쿼리 파라미터/스트링) 통해 전달
    • GET으로 메시지 바디 전달 가능 (지원하는 곳 많지 않아 권장X)
  • 🗒️ 예시
    • 서버에 메시지 전달
    • 서버가 응답 데이터 생성 후 전송

(2) POST

  • 개념
    • 요청 데이터 처리
    • 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용
    • 메시지 바디를 통해 서버로 요청 데이터 전달 ➡️ 서버는 요청 데이터 처리
    • 리소스 URI에 POST 요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 정해야함
  • 기능
    • 새 리소스 생성 (등록)
      ➡️ 서버가 아직 식별하지 않은 새 리소스 생성
      게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 기사 그룹에 메시지 게시
      ➡️ 기존 자원에 데이터 추가
    • 요청 데이터 처리
      ➡️ HTML 양식에 입력된 필드와 같은 데이터 블록을 데이터 처리 프로세스에 제공
      ➡️ 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 기사 그룹에 메시지 게시
      ➡️ POST 결과로 새로운 리소스 생성되지 않을 수도 있음 (ex. POST /orders/{orderId}/start-delivery (컨트롤 URI)
    • 다른 메서드로 처리하기 애매한 경우 (JSON으로 조회 데이터 넘겨야 하는데, GET 메서드를 사용 어려운 경우)
  • 🗒️ 예시
    • 서버로 메시지 전달
    • 서버가 신규 리소스 생성
    • 서버 응답 데이터 전송 (Location : 자원이 신규 생성된 경로)

(3) PUT

  • 개념
    • 리소스 완전 대체 (없으면 생성)
    • POST와 차이점 : 클라이언트가 리소스를 식별함 (리소스 위치 알고 URI 지정)
  • 🗒️ 예시
    • 리소스가 있는 경우

    • 리소스 없는 경우

(4) PATCH

  • 개념
    • 리소스 수정
  • 🗒️ 예시
    • 일부 필드 수정 가능

(5) DELETE

  • 개념
    • 리소스 제거
  • 🗒️ 예시

3) HTTP 메서드의 속성

  • 안전 (Safe Methods)
    • 호출해도 리소스 변경X
  • 멱등 (Idempotent Methods)
    • 여러번 호출해도 결과 동일함 (f(f(x)) = f(x))
    • 멱등 메서드 : GET, PUT, DELETE (POST X)
    • 활용 : 자동 복구 메커니즘 (서버가 정상 응답 아닐경우 클라이언트가 같은 요청 다시 해도 되는지 판단)
  • 캐시가능 (Cacheable Methods)
    • 응답 결과 리소스를 캐시해서 사용 가능한지
    • 캐시가능 메서드 : GET, HEAD, POST, PATCH (POST, PATCH 본문 내용까지 캐시 키로 고려해야 해서 구현 쉽지X)

📕 5. HTTP 메서드 활용

1) 클라이언트에서 서버로 데이터 전송

  • 방식
    • 쿼리 파라미터를 통한 데이터 전송 : GET (🗒️ 예시 : 정렬 필터 (검색어))
    • 메시지 바디를 통한 데이터 전송 : POST, PUT, PATCH (🗒️ 예시 : 회원 가입, 상품 주문, 리소스 등록, 리소스 변경)
  • (1) 정적 데이터 조회
    • 쿼리 파라미터 미사용 (리소스 경로로 단순 조회 가능)
    • 조회는 GET 사용
    • 🗒️ 예시 : 이미지, 정적 텍스트 문서
  • (2) 동적 데이터 조회
    • 쿼리 파라미터 사용
    • 조회 조건 줄여주는 필터 (조회 결과 정렬 조건에 사용)
    • 조회는 GET 사용
    • 🗒️ 예시 : 검색, 게시판 목록에서 정렬 필터(검색어)
  • (3) HTML Form을 통한 데이터 전송
    • HTML Form 제출시 GET/POST 전송
    • application/x-www-form-urlencode 사용
      ➡️ form의 내용을 key-value 형식으로 만들고, HTTP 메시지 바디에 넣어 전송 (한글, 숫자 등 url encoding)
    • multipart/form-data 사용
      ➡️ 파일 업로드 등 바이너리 데이터 전송시 사용
      ➡️ 다른 종류의 여러 파일과 form 내용 함께 전송 가능
    • 🗒️ 예시 : 회원 가입, 상품 주문, 데이터 변경

    • 파일 전송
  • (4) HTML API를 통한 데이터 전송
    • POST, PUT, PATCH : 메시지 바디를 통해 데이터 전송
    • GET : 조회, 쿼리 파라미터로 데이터 전달
    • application/json 사용 (TEXT, XML, JSON 등)
    • 서버 to 서버 (백엔드 시스템 통신)
    • 앱 클라이언트 (아이폰, 안드로이드)
    • 웹 클라이언트 (HTML에서 Form 전송 대신 JS 통한 통신(React, Vuejs)에 사용 (AJAX))
    • 🗒️ 예시 : 회원 가입, 상품 주문, 데이터 변경

2) HTTP API 설계 예시

  • (1) HTTP API - 컬렉션
    • POST 기반 등록
    • 서버가 리소스 URI 결정
    • 🗒️ 예시 : 회원 관리 API 제공

🗒️ 예시 : 회원 관리 시스템 만들기

  • 1️⃣ : API 설계 - PUT 기반 등록
    • 회원 목록 /members ➡️ GET
    • 회원 등록 /members ➡️ POST
    • 회원 조회 /members/{id} ➡️ GET
    • 회원 수정 /members/{id} ➡️ PATCH, PUT, POST
    • 회원 삭제 /members/{id} ➡️ DELETE

  • 2️⃣ POST - 신규 자원 등록 특징
    • 클라이언트는 등록될 리소스의 URI를 모름
      • 회원등록 /members ➡️ POST
      • POST /members
    • 서버가 새로 등록된 리소스 URI 생성
      • HTTP/1.1 201 Created
      • Lacation: /members/100
    • 컬렉션(Collection)
      • 서버가 관리하는 리소스 디렉토리
      • 서버가 리소스의 URI를 생성하고 관리
      • 컬렉션 /members으로 구분
  • (2) HTTP API - 스토어
    • PUT 기반 등록
    • 클라이언트가 리소스 URI 결정
    • 🗒️ 예시 : 정적 컨텐츠 관리, 원격 파일 관리

🗒️ 예시 : 파일 관리 시스템

  • 1️⃣ : API 설계 - PUT 기반 등록
    • 파일 목록 /files ➡️ GET
    • 파일 조회 /files/{filename} ➡️ GET
    • 파일 등록 /files/{filename} ➡️ PUT
    • 파일 삭제 /files/{filename} ➡️ DELETE
    • 파일 대량 등록 /files ➡️ POST

  • 2️⃣ : PUT - 신규 자원 등록 특징
    • 클라이언트가 리소스 URI 알고 있어야함
      • 파일등록 /file/{filename} ➡️ PUT
      • PUT /files/star.jpg
    • 클라이언트가 직접 리소스의 URI 지정
    • 스토어(Store)
      • 클라이언트가 관리하는 리소스 저장소
      • 클라이언트가 리소스의 URI를 알고 관리
      • 스토어 /files로 구분
  • (3) HTML FORM - 컨트롤 URI
  • GET, POST만 지원
    • AJAX 등 기술 사용해서 해결 가능
  • 순수 HTML + HTML FORM 사용
  • 컨트롤 URI
    • GET, POST 지원의 제약 해결하기 위해 동사로 된 리소스 경로 사용
    • HTTP 메서드로 헤결하기 애매한 경우 사용 (HTTP API 포함)
    • POST의 컨트롤 URI : /new, /edit, /delete

🗒️ 예시 : HTML FORM 사용

  • 1️⃣ : API 설계
    • 회원 목록 /members ➡️ GET
    • 회원 등록 폼 /members/new ➡️ GET
    • 회원 등록 /members, /members/new ➡️ POST
    • 회원 조회 /members/{id} ➡️ GET
    • 회원 수정 폼 /members/{id}/edit ➡️ GET
    • 회원 수정 /members/{id}, /members/{id}/edit ➡️ POST
    • 회원 삭제 /members/{id} ➡️ POST

  • 2️⃣ POST - 신규 자원 등록 특징
  • (4) URI 설계 개념
    • 문서(document)
      • 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
      • 🗒️ 예시 : /members/100, /files/star.jpg
    • 컬렉션 (Collection)
      • 서버가 관리하는 리소스 디렉터리
      • 서버가 리소스의 URI를 알고 관리
      • 🗒️ 예시 : /members
    • 스토어 (Store)
      • 클라이언트가 관리하는 자원 저장소
      • 클라이언트가 리소스의 URI를 알고 관리
      • 🗒️ 예시 : /files
    • 컨트롤러 (Controller), 컨트롤 URI
      • 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
      • 동사를 직접 사용
      • 🗒️ 예시 : /members/{id}/delete

📕 6. HTTP 상태코드

1) HTTP 상태코드 소개

  • (1) 상태코드
    • 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
    • 1xx (Informational) : 요청이 수신되어 처리중 (사용X)
    • 2xx (Successful) : 요청 정상 처리
    • 3xx (Redirection) : 요청을 완료하려면 추가 행동 필요
    • 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등 서버가 요청을 수행할 수 없음
    • 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함
  • (2) 모르는 상태코드의 경우
    • 클라이언트가 인식할 수 없는 상태코드를 서버가 반환할 경우
      ➡️ 상위 코드로 해석해서 처리 (299 ???이면 2xx(Successful)
    • 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨

2) 2xx - 성공

  • 클라이언트의 요청을 성공적으로 처리
  • (1) 200 OK
    • 요청 성공
  • (2) 201 Created
    • 요청 성공해서 새로운 리소스가 생성됨
    • 생성된 리소스는 응답의 Location 헤더 필드로 식별
  • (3) 202 Accepted
    • 요청이 접수되었으나 처리가 완료되지 않았음
    • 배치 처리 같은 곳에서 사용
    • 🗒️ 예시 : 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함
  • (4) 204 No Content
    • 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
    • 🗒️ 예시 : 웹 문서 편집기에서 save 버튼
      • save 버튼의 결과로 아무 내용이 없어도 됨
      • save 버튼을 눌러도 같은 화면을 유지해야함
    • 결과 내용이 없어도 204 메시지(2xx)만으로 성공 인식 가능

3) 3xx - 리다이렉션

  • 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요

📖 참고 📖 리다이렉션

  • redirect 개념
    • 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동
    • 자동 리다이렉트 흐름
  • redirection 종류
    • 영구 리다이렉션
      • 특정 리소스의 URI가 영구적으로 이동 (경로 변경 알림 용도)
      • 원래 URL 사용X, 검색 엔진 등에서도 변경 인지
      • 301 Moved Permanently, 308 Permanent Redirect
      • 🗒️ 예시 : /event (기존) ➡️ /new-event (변경)
    • 일시 리다이렉션
      • 리소스 URI가 일시적으로 변경
      • 검색 엔진 등에서 URL 변경하면 X
      • 302 Found, 303 See Otehr, 307 Temporary Redirect
      • 🗒️ 예시 : 주문 완료 후 주문 내역 화면으로 이동
      • PRG : Post/Redirect/Get
        • PRG 이후 리다이렉트 하면 URL이 이미 POST ➡️ GET으로 리다이렉트됨
        • 새로고침 해도 GET으로 결과 화면만 조회
      • 🗒️ 예시 : PRG 사용하지 않으면 웹브라우저 새로고침시 POST 재요청
        • POST로 주문 후에 새로고침으로 인한 중복 주문 방지
        • POST로 주문 후에 주문 결과 화면을 GET 메서드로 리다이렉트
        • 새로고침해도 결과 화면을 GET으로 조회
        • 중복 주문 대신에 결과 화면만 GET으로 다시 요청
    • 특수 리다이렉션 (결과 대신 캐시 사용)
  • (2) 300 Mutlple Choices
    • 사용X
  • (3) 301 Moved Permanently
    • 영구 리다이렉션
    • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
  • (4) 302 Found
    • 일시 리다이렉션
    • HTTP 메서드 유지하기 위해 등장했지만, 웹 브라우저들이 GET으로 바꿔버림 ➡️ 명확한 303/307 등장
    • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음 (GET으로 변할 수 있음)
  • (5) 303 See Other
    • 일시 리다이렉션
    • 302와 기능은 동일
    • 리다이렉트시 요청 메서드가 GET으로 변경 (메서드가 GET으로 변경)
  • (6) 304 Not Modified
    • 캐시 목적으로 사용
    • 클라이언트에게 리소스가 수정되지 않았음을 알려줌
      ➡️ 클라이언트는 로컬PC에 저장된 캐시를 재사용함 (캐시로 리다이렉트)
    • 304 응답에는 메시지 바디를 포함하면 안됨 (로컬 캐시 사용해야 하므로)
    • 조건부 GET, HEAD 요청시 사용
  • (7) 307 Temporary Redirect
    • 일시 리다이렉션
    • 302와 기능은 동일
    • 리다이렉트시 요청 메서드와 본문 유지 (요청 메서드 변하면 안됨)
  • (8) 308 Permanent Redirect
    • 영구 리다이렉션
    • 301과 기능은 동일
    • 리다이렉트시 요청 메서드 POST 유지 및 본문 유지 (처음 POST를 보내면 리다이렉트도 보내짐)

4) 4xx - 클라이언트 오류, 5xx - 서버 오류

728x90
반응형

'BE > Spring' 카테고리의 다른 글

Spring  (0) 2025.04.11
스프링 부트, 웹 MVX, DB접근 기술  (0) 2025.04.10
Servlet/JSP/JDBC  (1) 2025.04.10
Spring Framework  (0) 2025.04.10
Spring Boot  (0) 2025.04.10