릴스에서 키키의 404 관련해서 화제인 릴스가 있다. 개발자의 키키 404 반응!
릴스에서 키키의 404 관련해서 화제인 릴스가 있다. 개발자의 키키 404 반응!
HTTP 응답 상태 코드는 클라이언트의 요청에 대해 서버가 어떤 결과를 돌려주는지를 숫자로 표현한 것이다.(RFC 7231 기준)
서버가 요청을 수신했고, 처리가 계속 진행 중임을 알림
| 코드 | 이름 | 설명 |
|---|---|---|
| 100 | Continue | 요청의 초기 부분이 수신됨, 계속 진행 가능 |
| 101 | Switching Protocols | 프로토콜 전환 승인 (예: HTTP → WebSocket) |
| 102 | Processing | 요청을 처리 중이나 아직 응답 없음 (WebDAV) |
| 103 | Early Hints | 최종 응답 전에 일부 헤더를 미리 전송 |
요청이 정상적으로 수신, 이해, 처리되었음을 의미
| 코드 | 이름 | 설명 |
|---|---|---|
| 200 | OK | 요청 성공. 가장 기본적인 성공 응답 |
| 201 | Created | 리소스 생성 완료. POST 요청 성공 시 주로 사용 |
| 202 | Accepted | 요청은 수신됐지만 아직 처리되지 않음 (비동기 작업) |
| 203 | Non-Authoritative Information | 프록시 등에서 변환된 응답 |
| 204 | No Content | 성공했지만 반환할 본문 없음. DELETE 응답 등에 사용 |
| 205 | Reset Content | 클라이언트에게 뷰 리셋 요청 |
| 206 | Partial Content | Range 요청에 대한 부분 응답 (파일 다운로드 이어받기 등) |
| 207 | Multi-Status | 여러 리소스에 대한 복합 상태 (WebDAV) |
| 208 | Already Reported | 이미 열거된 리소스 (WebDAV) |
| 226 | IM Used | 인스턴스 조작이 적용된 응답 |
요청을 완료하려면 추가 동작이 필요함을 알림
| 코드 | 이름 | 설명 |
|---|---|---|
| 300 | Multiple Choices | 여러 선택지가 존재 |
| 301 | Moved Permanently | 리소스가 영구적으로 새 URL로 이동됨 |
| 302 | Found | 임시 리다이렉트. 다른 URL로 일시적 이동 |
| 303 | See Other | 다른 URI에서 GET으로 조회하라는 응답 |
| 304 | Not Modified | 캐시된 버전 그대로 사용 가능 (조건부 요청) |
| 307 | Temporary Redirect | 임시 리다이렉트 (HTTP 메서드 유지) |
| 308 | Permanent Redirect | 영구 리다이렉트 (HTTP 메서드 유지) |
301 vs 308: 301은 리다이렉트 시 메서드가 GET으로 바뀔 수 있지만, 308은 원래 메서드를 유지한다. 302와 307도 같은 관계
요청 자체에 문제가 있어서 서버가 처리할 수 없음을 의미
| 코드 | 이름 | 설명 |
|---|---|---|
| 400 | Bad Request | 잘못된 요청 구문이나 파라미터 |
| 401 | Unauthorized | 인증 필요. 로그인이 안 된 상태 |
| 402 | Payment Required | 결제 필요 (예약된 코드, 실제 사용 드묾) |
| 403 | Forbidden | 인증은 됐지만 권한이 없음 |
| 404 | Not Found | 요청한 리소스를 찾을 수 없음 |
| 405 | Method Not Allowed | 허용되지 않는 HTTP 메서드 |
| 406 | Not Acceptable | Accept 헤더와 매칭되는 응답이 없음 |
| 407 | Proxy Authentication Required | 프록시 인증 필요 |
| 408 | Request Timeout | 요청 시간 초과 |
| 409 | Conflict | 리소스 상태 충돌 (동시 수정, 중복 생성 등) |
| 410 | Gone | 리소스가 영구적으로 삭제됨. 404와 달리 "있었는데 없어진" 상태 |
| 411 | Length Required | Content-Length 헤더 필요 |
| 412 | Precondition Failed | 전제 조건 헤더(If-Match 등) 불충족 |
| 413 | Payload Too Large | 요청 본문이 서버 허용 크기 초과 |
| 414 | URI Too Long | URI가 너무 길어서 처리 불가 |
| 415 | Unsupported Media Type | 지원하지 않는 Content-Type |
| 416 | Range Not Satisfiable | 요청한 Range가 유효하지 않음 |
| 417 | Expectation Failed | Expect 헤더 조건 불충족 |
| 418 | I'm a Teapot ☕ | 만우절 장난 RFC 2324 — "나는 찻주전자입니다" |
| 421 | Misdirected Request | 잘못된 서버로 전달된 요청 |
| 422 | Unprocessable Entity | 구문은 맞지만 의미적 오류. 유효성 검증 실패 시 |
| 423 | Locked | 리소스가 잠겨있음 (WebDAV) |
| 424 | Failed Dependency | 이전 요청 실패로 인한 연쇄 실패 (WebDAV) |
| 425 | Too Early | TLS Early Data 재전송 위험 |
| 426 | Upgrade Required | 프로토콜 업그레이드 필요 |
| 428 | Precondition Required | 조건부 요청(If-Match 등) 필수 |
| ⭐ 429 | Too Many Requests | Rate Limit 초과. API 호출 제한에 걸렸을 때 |
| 431 | Request Header Fields Too Large | 요청 헤더가 너무 큼 |
| 451 | Unavailable For Legal Reasons | 법적 사유로 접근 차단. 소설 _화씨 451_에서 따온 번호 |
401 vs 403: 401은 "너 누구야?" (인증 안 됨), 403은 "누군지는 알겠는데 안 돼" (권한 없음). 흔히 혼용되지만 의미가 다르다.
서버 측에서 요청을 처리하다가 실패했음을 의미
| 코드 | 이름 | 설명 |
|---|---|---|
| 500 | Internal Server Error | 서버 내부 오류. 예외 미처리 등 포괄적 에러 |
| 501 | Not Implemented | 서버가 해당 기능을 지원하지 않음 |
| 502 | Bad Gateway | 게이트웨이/프록시가 업스트림에서 잘못된 응답 수신 |
| 503 | Service Unavailable | 서버 과부하 또는 점검 중 |
| 504 | Gateway Timeout | 게이트웨이/프록시가 업스트림 응답을 시간 내 못 받음 |
| 505 | HTTP Version Not Supported | 요청한 HTTP 버전을 서버가 미지원 |
| 506 | Variant Also Negotiates | 콘텐츠 협상 순환 오류 |
| 507 | Insufficient Storage | 저장 공간 부족 (WebDAV) |
| 508 | Loop Detected | 무한 루프 감지 (WebDAV) |
| 510 | Not Extended | 추가 확장 필요 |
| 511 | Network Authentication Required | 네트워크 인증 필요 (캡티브 포탈 등) |
502 vs 504: 둘 다 게이트웨이(Nginx, 로드밸런서 등) 뒤의 서버 문제인데, 502는 "응답이 왔는데 이상함", 504는 "응답 자체가 안 옴 (타임아웃)"이다.
자주 쓰는 코드만 뽑으면 이 정도. 끝!
| 상황 | 코드 |
|---|---|
| 정상 응답 | 200, 201, 204 |
| 리다이렉트 | 301, 302, 304 |
| 클라이언트 잘못 | 400, 401, 403, 404 |
| 유효성/충돌 | 409, 422 |
| Rate Limit | 429 |
| 서버 문제 | 500, 502, 503, 504 |
Written by
PM이자 빌더. Sapienta 공동 창업자.