6. Response Status Codes

status-code μš”μ†ŒλŠ” μš”μ²­μ„ μ΄ν•΄ν•˜κ³  μΆ©μ‘±μ‹œν‚€λ €λŠ” μ‹œλ„μ˜ κ²°κ³Όλ₯Ό μ œκ³΅ν•˜λŠ” μ„Έ 자리 μ •μˆ˜ μ½”λ“œλ‹€.

μΈμ‹λ˜μ§€ μ•ŠλŠ” μƒνƒœ μ½”λ“œ 471이 ν΄λΌμ΄μ–ΈνŠΈμ— μ˜ν•΄ μˆ˜μ‹ λœ 경우, ν΄λΌμ΄μ–ΈνŠΈλŠ” μžμ‹ μ˜ μš”μ²­μ— 이상이 μžˆλ‹€κ³  κ°€μ •ν•˜κ³ , 응닡은 400 (Bad Request) μƒνƒœ μ½”λ“œλ₯Ό 받은 κ²ƒμ²˜λŸΌ μ·¨κΈ‰ν•  수 μžˆλ‹€

  • 1xx (Informational): μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ ν”„λ‘œμ„ΈμŠ€κ°€ 계속 진행됨

  • 2xx (Successful): μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜μ‹ , 이해 및 수락됨

  • 3xx (Redirection): μš”μ²­μ„ μ™„λ£Œν•˜λ €λ©΄ μΆ”κ°€ 쑰치λ₯Ό μ·¨ν•΄μ•Ό 함

  • 4xx (Client Error): μš”μ²­μ— 잘λͺ»λœ ꡬ문이 ν¬ν•¨λ˜μ–΄ μžˆκ±°λ‚˜ μΆ©μ‘±ν•  수 μ—†μŒ

  • 5xx (Server Error): μ„œλ²„κ°€ μœ νš¨ν•œ μš”μ²­μ„ μˆ˜ν–‰ν•˜μ§€ λͺ»ν•¨

6.1 Overview of Status Codes

기본적으둜 μΊμ‹œ κ°€λŠ₯으둜 μ •μ˜λœ μƒνƒœ μ½”λ“œ(e.g., 이 λͺ…μ„Έμ˜ 200, 203, 206, 300, 301, 404, 405, 410, 414 및 501)의 응닡은 λ©”μ„œλ“œ μ •μ˜λ‚˜ λͺ…μ‹œμ  μΊμ‹œ μ œμ–΄ [RFC7234]에 달리 λͺ…μ‹œλ˜μ§€ μ•ŠλŠ” ν•œ νœ΄λ¦¬μŠ€ν‹±ν•œ 만료λ₯Ό 가진 μΊμ‹œμ— μ˜ν•΄ μž¬μ‚¬μš©ν•  수 있으며, λ‹€λ₯Έ λͺ¨λ“  μƒνƒœ μ½”λ“œλŠ” 기본적으둜 μΊμ‹œ κ°€λŠ₯ν•˜μ§€ μ•Šλ‹€.

6.2 Informational 1xx

1xx (Informational) λ“±κΈ‰μ˜ μƒνƒœ μ½”λ“œλŠ” μš”μ²­λœ 쑰치λ₯Ό μ™„λ£Œν•˜κ³  μ΅œμ’… 응닡을 보내기 전에 컀λ„₯μ…˜ μƒνƒœ λ˜λŠ” μš”μ²­ 진행 상황을 μ „λ‹¬ν•˜κΈ° μœ„ν•œ 쀑간 응닡을 λ‚˜νƒ€λ‚Έλ‹€. 1xx 응닡은 status-line(헀더 λΆ€λ¬Έμ˜ 끝을 μ•Œλ¦¬λŠ” 빈 라인) ν›„ 첫 번째 빈 라인에 μ˜ν•΄ μ’…λ£Œλœλ‹€.

  • HTTP/1.0은 1xx μƒνƒœ μ½”λ“œλ₯Ό μ •μ˜ν•˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ μ„œλ²„λŠ” 1xx 응닡을 HTTP/1.0 ν΄λΌμ΄μ–ΈνŠΈμ— μ „μ†‘ν•΄μ„œλŠ” μ•ˆλœλ‹€. (MUST NOT)

  • ν΄λΌμ΄μ–ΈνŠΈλŠ” μ΅œμ’… 응닡 전에 받은 1xx 응닡 쀑 ν•˜λ‚˜ 이상을 ꡬ문 뢄석할 수 μžˆμ–΄μ•Ό ν•œλ‹€.(MUST)

  • μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” 예기치 μ•Šμ€ 1xx 응닡을 λ¬΄μ‹œν•  수 μžˆλ‹€.(MAY)

6.2.1 100 Continue

100 (Continue) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ˜ 초기 뢀뢄이 μˆ˜μ‹ λ˜μ–΄ 아직 μ„œλ²„μ—μ„œ κ±°λΆ€λ˜μ§€ μ•Šμ•˜μŒμ„ λ‚˜νƒ€λ‚Έλ‹€. μ„œλ²„λŠ” μš”μ²­μ΄ μ™„μ „νžˆ μ ‘μˆ˜λ˜κ³  쑰치된 ν›„ μ΅œμ’… 응닡을 보내렀고 ν•œλ‹€.

μš”μ²­μ΄ 100-continueλ₯Ό ν¬ν•¨ν•˜λŠ” Expect 헀더 ν•„λ“œλ₯Ό 포함할 경우, 100 응닡은 Section 5.1.1에 μ„€λͺ…ν•œλŒ€λ‘œ μ„œλ²„κ°€ μš”μ²­ νŽ˜μ΄λ‘œλ“œ 본문을 μˆ˜μ‹ ν•˜κΈ°λ₯Ό 원함을 λ‚˜νƒ€λ‚Έλ‹€.

6.2.2 101 Switching Protocol

101 (Switching Protocols) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€μ΄ μ—°κ²°μ—μ„œ μ‚¬μš©λ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨ ν”„λ‘œν† μ½œμ˜ 변경에 λŒ€ν•΄ Upgrade 헀더 ν•„λ“œ ([RFC7230]의 μ„Ήμ…˜ 6.7)λ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ΄ν•΄ν•˜κ³  μ€€μˆ˜ ν•  μ˜μ‚¬κ°€ μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ„œλ²„λŠ” 101 응닡을 μ’…λ£Œν•˜λŠ” 빈 쀄 λ°”λ‘œ λ‹€μŒμ— μ „ν™˜ 될 ν”„λ‘œν† μ½œμ„ λ‚˜νƒ€λ‚΄λŠ” 응닡에 Upgrade 헀더 ν•„λ“œλ₯Ό μƒμ„±ν•΄μ•Όν•©λ‹ˆλ‹€.

6.3 Successful 2xx

2xx (Successful) λ“±κΈ‰μ˜ μƒνƒœ μ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜μ‹ , 이해 및 μˆ˜μš©λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.3.1 200 OK

200 (OK) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ΄ μ„±κ³΅ν–ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 이 λͺ…세에 μ˜ν•΄ μ •μ˜λœ λ©”μ„œλ“œμ— λŒ€ν•΄, νŽ˜μ΄λ‘œλ“œμ˜ μ˜λ„λœ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό 같이 μš”μ•½ν•  수 μžˆλ‹€.

  • GET : λŒ€μƒ λ¦¬μ†ŒμŠ€μ˜ ν‘œν˜„

  • HEAD : GET와 λ™μΌν•œ ν‘œν˜„μ΄μ§€λ§Œ ν‘œν˜„ 데이터가 μ—†λŠ” 경우.

  • POST : 쑰치의 μƒνƒœ λ˜λŠ” 결과의 ν‘œμ‹œ

  • PUT, DELETE : 쑰치의 μƒνƒœ ν‘œμ‹œ

  • OPTIONS : 톡신 μ˜΅μ…˜μ˜ ν‘œμ‹œ

  • TRACE : μ—”λ“œ μ„œλ²„μ—μ„œ μˆ˜μ‹ ν•œ μš”μ²­ λ©”μ‹œμ§€μ˜ ν‘œν˜„

CONNECT에 λŒ€ν•œ 응닡 외에, 200 응닡은 항상 νŽ˜μ΄λ‘œλ“œλ₯Ό 가지고 μžˆμ§€λ§Œ, μ›μ„œλ²„λŠ” 0의 νŽ˜μ΄λ‘œλ“œ 본문을 생성할 수 μžˆλ‹€. νŽ˜μ΄λ‘œλ“œκ°€ ν•„μš” μ—†λŠ” 경우, μ›μ„œλ²„λŠ” λŒ€μ‹  204(No Content)λ₯Ό 전솑해야 ν•œλ‹€. CONNECT의 경우, 성곡적인 κ²°κ³Όκ°€ 200 응닡 헀더 λΆ€λ¬Έ 직후에 μ‹œμž‘λ˜λŠ” 터널이기 λ•Œλ¬Έμ— νŽ˜μ΄λ‘œλ“œκ°€ ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€.

200개의 응닡은 기본적으둜 μΊμ‹œν•  수 μžˆλ‹€.

6.3.2 201 Created

201(Created) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ΄ μ΄ν–‰λ˜μ–΄ ν•˜λ‚˜ μ΄μƒμ˜ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€κ°€ μƒμ„±λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

201 응닡 νŽ˜μ΄λ‘œλ“œμ—λŠ” 일반적으둜 μƒμ„±λœ λ¦¬μ†ŒμŠ€κ°€ μ„€λͺ…λ˜κ³  λ§ν¬λœλ‹€.

6.3.3 202 Accepted

202 (Accepted) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ΄ μ ‘μˆ˜λ˜μ—ˆμœΌλ‚˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•Šμ•˜μŒμ„ ν‘œμ‹œν•œλ‹€.

202 응닡은 μ˜λ„μ μœΌλ‘œ λͺ¨ν˜Έν•˜λ‹€. κ·Έ λͺ©μ μ€ μ‚¬μš©μž μ—μ΄μ „νŠΈμ˜ μ„œλ²„ 컀λ„₯μ…˜μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ μ§€μ†λ˜λ„λ‘ μš”κ΅¬ν•˜μ§€ μ•Šκ³  μ„œλ²„κ°€ 일뢀 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€(μ•„λ§ˆλ„ ν•˜λ£¨μ— ν•œ 번만 μ‹€ν–‰λ˜λŠ” λ°° 치 지ν–₯ ν”„λ‘œμ„ΈμŠ€)에 λŒ€ν•œ μš”μ²­μ„ μˆ˜λ½ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이닀.

6.3.4 203 Non-Authoritative Information

203 (Non-Authoritative Information) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ΄ μ„±κ³΅μ μ΄μ—ˆμœΌλ‚˜, λ³€ν™˜ ν”„λ½μ‹œμ— μ˜ν•΄ μ›μ„œλ²„μ˜ 200 (OK) μ‘λ‹΅μœΌλ‘œλΆ€ν„° λ™λ΄‰λœ νŽ˜μ΄λ‘œλ“œκ°€ μˆ˜μ •λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€ ([RFC7230]의 Section 5.7.2).

203 응닡은 μ–΄λ–€ μƒνƒœ μ½”λ“œλ‘œλ“  응닡에 μ μš©ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλŠ” 214 Transformation Apply의 Warning μ½”λ“œ([RFC7234] Section 5.5)와 μœ μ‚¬ν•˜λ‹€.

6.3.5 204 No Content

204 (No Content) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μ΄ν–‰ν–ˆμœΌλ©° 응닡 νŽ˜μ΄λ‘œλ“œ 본문으둜 보낼 μΆ”κ°€ μ½˜ν…μΈ κ°€ μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 응닡 헀더 ν•„λ“œμ˜ λ©”νƒ€λ°μ΄ν„°λŠ” μš”μ²­λœ μž‘μ—…μ΄ 적용된 ν›„ λŒ€μƒ λ¦¬μ†ŒμŠ€μ™€ μ„ νƒλœ ν‘œν˜„μ„ 가리킨닀.

예λ₯Ό λ“€μ–΄, PUT μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ 204 μƒνƒœ μ½”λ“œκ°€ μˆ˜μ‹ λ˜κ³  응닡에 Etag 헀더 ν•„λ“œκ°€ ν¬ν•¨λœ 경우 PUT은 μ„±κ³΅ν–ˆμœΌλ©° ETag field-value은 λŒ€μƒ λ¦¬μ†ŒμŠ€μ˜ μƒˆλ‘œμš΄ ν‘œν˜„μ„ μœ„ν•œ entity-tagκ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

6.3.6 205 Reset Content

205 (Reset Content) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν–‰ν–ˆμŒμ„ λ‚˜νƒ€λ‚΄λ©°, μ‚¬μš©μž μ—μ΄μ „νŠΈκ°€ μš”μ²­μ„ 보낸 "λ¬Έμ„œ 보기"λ₯Ό μ›μ„œλ²„μ—μ„œ μˆ˜μ‹ ν•œ μ›λž˜ μƒνƒœλ‘œ μž¬μ„€μ •ν–ˆλ‹€.

  • 205 μƒνƒœ μ½”λ“œλŠ” μΆ”κ°€ μ½˜ν…μΈ κ°€ μ œκ³΅λ˜μ§€ μ•ŠμŒμ„ μ˜λ―Έν•˜λ―€λ‘œ μ„œλ²„λŠ” 205 μ‘λ‹΅μ—μ„œ νŽ˜μ΄λ‘œλ“œλ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

  • μ„œλ²„λŠ” 205 응닡에 λŒ€ν•΄ λ‹€μŒ 쀑 ν•˜λ‚˜λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.(MUST):

  • a) 값이 0인 Content-Length 헀더 ν•„λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ μ‘λ‹΅μ˜ 0 길이 본문을 λ‚˜νƒ€λ‚΄λΌ

  • b) 청크 값을 가진 Transfer-Encoding 헀더 ν•„λ“œμ™€ 0 길이의 단일 청크둜 κ΅¬μ„±λœ λ©”μ‹œμ§€ 본문을 ν¬ν•¨ν•˜μ—¬ 응닡에 λŒ€ν•œ 0 길이의 νŽ˜μ΄λ‘œλ“œλ‘œ λ‚˜νƒ€λ‚΄λΌ

  • c) 헀더 뢀문을 μ’…λ£Œν•˜λŠ” 빈 쀄을 보낸 ν›„ μ¦‰μ‹œ 컀λ„₯μ…˜μ„ 닫아라

6.4 Redirection 3xx

μƒνƒœ μ½”λ“œμ˜ 3xx (Redirection) 등급은 μš”μ²­μ„ μ΄ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž μ—μ΄μ „νŠΈμ˜ μΆ”κ°€ μ‘°μΉ˜κ°€ ν•„μš”ν•˜λ‹€λŠ” 것을 λ‚˜νƒ€λ‚Έλ‹€. Location 헀더 ν•„λ“œ(Section 7.1.2)κ°€ μ œκ³΅λ˜λŠ” 경우, μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” νŠΉμ • μƒνƒœ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λ”라도 Location ν•„λ“œ 값이 μ°Έμ‘°ν•˜λŠ” URI둜 μš”μ²­μ„ μžλ™μœΌλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ ν•  수 μžˆλ‹€.

여기에 λ¦¬λ‹€μ΄λ ‰νŠΈμ˜ λͺ‡ 가지 μœ ν˜•μ΄ μžˆλ‹€:

  • μƒνƒœ μ½”λ“œ 301(Moved Permanently), 302 (Found), 307 (Temporary Redirect)κ³Ό 같이 Location ν•„λ“œμ—μ„œ μ œκ³΅ν•˜λŠ”λŒ€λ‘œ λ‹€λ₯Έ URIμ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆμŒμ„ λ‚˜νƒ€λ‚΄λŠ” λ¦¬λ‹€μ΄λ ‰νŠΈ.

  • 300 (Multiple Choices) μƒνƒœ μ½”λ“œμ—μ„œμ™€ 같이 각각 μ›λž˜μ˜ μš”μ²­ λŒ€μƒμ„ λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” 맀칭 λ¦¬μ†ŒμŠ€μ˜ 선택을 μ œκ³΅ν•˜λŠ” λ¦¬λ‹€μ΄λ ‰νŠΈ.

  • 303 (See Other) μƒνƒœ μ½”λ“œμ—μ„œμ™€ 같이 μš”μ²­μ— λŒ€ν•œ 간접적인 응닡을 λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” μœ„μΉ˜ ν•„λ“œλ‘œ μ‹λ³„λœ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€λ‘œμ˜ λ¦¬λ‹€μ΄λ ‰νŠΈ.

  • 304 (Not Modified) μƒνƒœ μ½”λ“œμ—μ„œμ™€ 같이 이전에 μΊμ‹œλœ 결과둜 λ¦¬λ‹€μ΄λ ‰νŠΈ.

6.4.1 300 Multiple Choices

300 (Multiple Choices) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€κ°€ 각각 더 ꡬ체적인 μ‹λ³„μžλ₯Ό 가진 λ‘˜ μ΄μƒμ˜ ν‘œν˜„μ„ 가지고 μžˆμŒμ„ λ‚˜νƒ€λ‚΄λ©°, μ‚¬μš©μž(λ˜λŠ” μ‚¬μš©μž μ—μ΄μ „νŠΈ)κ°€ ν•΄λ‹Ή μ‹λ³„μž 쀑 ν•˜λ‚˜ μ΄μƒμœΌλ‘œ μš”μ²­μ„ λ¦¬λ””λ ‰μ…˜ν•˜μ—¬ μ„ ν˜Έν•˜λŠ” ν‘œν˜„μ„ 선택할 수 μžˆλ„λ‘ λŒ€μ•ˆμ— λŒ€ν•œ 정보가 제곡되고 μžˆλ‹€.

6.4.2 301 Moved Permanently

301(Moved Permanently) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— μƒˆ 영ꡬ URIκ°€ ν• λ‹Ήλ˜μ—ˆμœΌλ©° 이 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ ν–₯ν›„ μ°Έμ‘°λŠ” λ™λ΄‰λœ URI 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•΄μ•Ό 함을 λ‚˜νƒ€λ‚Έλ‹€.

6.4.3 302 Found

302 (Found) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€κ°€ μΌμ‹œμ μœΌλ‘œ λ‹€λ₯Έ URI μ•„λž˜μ— μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

μ°Έκ³ : 역사적 이유둜, μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” 후속 μš”μ²­μ— λŒ€ν•œ μš”μ²­ λ©”μ„œλ“œλ₯Ό POSTμ—μ„œ GET둜 λ³€κ²½ν•  수 μžˆλ‹€.

6.4.4 303 See Other

303 (See Other) μƒνƒœ μ½”λ“œλŠ” μ›λž˜ μš”μ²­μ— λŒ€ν•œ 간접적인 응닡을 μ œκ³΅ν•˜κΈ° μœ„ν•œ Location 헀더 ν•„λ“œμ— URIκ°€ ν‘œμ‹œν•œ λŒ€λ‘œ μ„œλ²„κ°€ μ‚¬μš©μž μ—μ΄μ „νŠΈλ₯Ό λ‹€λ₯Έ λ¦¬μ†ŒμŠ€λ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ ν•˜κ³  μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” λ˜ν•œ λ¦¬λ‹€μ΄λ ‰νŠΈ 될 수 μžˆλŠ” URI(HTTPλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 GET λ˜λŠ” HEAD μš”μ²­)λ₯Ό λŒ€μƒμœΌλ‘œ 검색 μš”μ²­μ„ μˆ˜ν–‰ν•˜μ—¬ μ΅œμ’… κ²°κ³Όλ₯Ό μ›λž˜ μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ μ œμ‹œν•  수 μžˆλ‹€. Location 헀더 ν•„λ“œμ˜ μƒˆ URIλŠ” μœ νš¨ν•œ μš”μ²­ URI와 λ™λ“±ν•œ κ²ƒμœΌλ‘œ κ°„μ£Όλ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점에 μ°Έκ³ ν•œλ‹€.

HEAD μš”μ²­μ— λŒ€ν•œ 응닡을 μ œμ™Έν•˜κ³ , 303 μ‘λ‹΅μ˜ ν‘œν˜„μ—λŠ” Location 헀더 ν•„λ“œμ— 제곡된 λ™μΌν•œ URI 참쑰에 λŒ€ν•œ ν•˜μ΄νΌλ§ν¬κ°€ μžˆλŠ” 짧은 ν•˜μ΄νΌν…μŠ€νŠΈ λ…ΈνŠΈκ°€ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€

6.4.5 305 Use Proxy

305 (Use Proxy) μƒνƒœ μ½”λ“œλŠ” 이 λͺ…μ„Έμ˜ 이전 λ²„μ „μ—μ„œ μ •μ˜λ˜μ—ˆμœΌλ©° ν˜„μž¬ 더 이상 μ‚¬μš©λ˜μ§€μ•ŠλŠ”λ‹€.

6.4.6 306 (Unused)

306 μƒνƒœ μ½”λ“œλŠ” 이 λͺ…μ„Έμ˜ 이전 λ²„μ „μ—μ„œ μ •μ˜λ˜μ—ˆμœΌλ©° 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©° μ½”λ“œκ°€ μ˜ˆμ•½λ˜μ–΄ μžˆλ‹€.

6.4.7 307 Temporary Redirect

  • 307(Temporary Redirect) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€κ°€ μΌμ‹œμ μœΌλ‘œ λ‹€λ₯Έ URI에 μƒμ£Όν•˜κ³  μžˆλ‹€λŠ” 것을 λ‚˜νƒ€λ‚΄λ©°, μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” ν•΄λ‹Ή URI둜 μžλ™ λ¦¬λ””λ ‰μ…˜μ„ μˆ˜ν–‰ν•  경우 μš”μ²­ λ©”μ„œλ“œλ₯Ό λ³€κ²½ ν•˜λ©΄ μ•ˆ λœλ‹€.(MUST NOT)

μ°Έκ³ : 이 μƒνƒœ μ½”λ“œλŠ” μš”μ²­ λ©”μ„œλ“œλ₯Ό POSTμ—μ„œ GET둜 λ³€κ²½ν•  수 μ—†λ‹€λŠ” 점을 μ œμ™Έν•˜κ³  302 (Found)와 μœ μ‚¬ν•˜λ‹€.

6.5 Client Error 4xx

μƒνƒœ μ½”λ“œμ˜ 4xx(Client Error) 등급은 ν΄λΌμ΄μ–ΈνŠΈκ°€ 였λ₯˜κ°€ λ°œμƒν•œ κ²ƒμœΌλ‘œ λ³΄μΈλ‹€λŠ” 것을 λ‚˜νƒ€λ‚Έλ‹€.

6.5.1 400 Bad Request

400 (Bad Request) μƒνƒœ μ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 였λ₯˜λ‘œ μΈμ‹λ˜λŠ” 것(e.g., 잘λͺ»λœ μš”μ²­ ꡬ문, 잘λͺ»λœ μš”μ²­ λ©”μ‹œμ§€ ν”„λ ˆμž„ λ˜λŠ” 기만적인 μš”μ²­ λΌμš°νŒ…)으둜 인해 μ„œλ²„κ°€ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†κ±°λ‚˜ μ²˜λ¦¬ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.5.2 402 Payment Required

402 (Payment Required) μƒνƒœ μ½”λ“œλŠ” ν–₯ν›„ μ‚¬μš©μ„ μœ„ν•΄ μ˜ˆμ•½λ˜μ–΄ μžˆλ‹€.

6.5.3 403 Forbidden

403 (Forbidden) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν•΄ν–ˆμ§€λ§Œ μŠΉμΈμ„ 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€. μš”μ²­μ΄ κΈˆμ§€λœ 이유λ₯Ό κ³΅κ°œν•˜κ³ μž ν•˜λŠ” μ„œλ²„λŠ”, 응닡 νŽ˜μ΄λ‘œλ“œ(μžˆλŠ” 경우)μ—μ„œ κ·Έ 이유λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€.

6.5.2 404 Not Found

404 (Not Found) μƒνƒœ μ½”λ“œλŠ” μ›μ„œλ²„κ°€ λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ ν˜„μž¬ ν‘œν˜„μ„ 찾지 λͺ»ν–ˆκ±°λ‚˜ μ‘΄μž¬ν•˜λŠ” 것을 κ³΅κ°œν•˜μ§€ μ•ŠμœΌλ €λŠ” 것을 λ‚˜νƒ€λ‚Έλ‹€. 404 μƒνƒœ μ½”λ“œλŠ” μ΄λŸ¬ν•œ ν‘œν˜„ 뢀쑱이 μΌμ‹œμ μΈμ§€ μ˜κ΅¬μ μΈμ§€λ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠλŠ”λ‹€. 410 (Gone) μƒνƒœ μ½”λ“œλŠ” μ›μ„œλ²„κ°€ μ–΄λ–€ ꡬ성 κ°€λŠ₯ν•œ μˆ˜λ‹¨μ„ 톡해 쑰건이 영ꡬ적일 κ°€λŠ₯성이 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆλŠ” 경우 404 보닀 μ„ ν˜Έλœλ‹€.

6.5.5 405 Method Not Allowed

405(Method Not Not Attable) μƒνƒœ μ½”λ“œλŠ” request-line에 μˆ˜μ‹ λœ λ©”μ„œλ“œκ°€ μ›μ„œλ²„μ— μ˜ν•΄ μ•Œλ €μ Έ μžˆμ§€λ§Œ λŒ€μƒ λ¦¬μ†ŒμŠ€μ—λŠ” μ§€μ›λ˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

  • μ›μ„œλ²„λŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ˜ ν˜„μž¬ μ§€μ›λ˜λŠ” λ©”μ„œλ“œ λͺ©λ‘μ„ ν¬ν•¨ν•˜λŠ” 405 응닡에 Allow 헀더 ν•„λ“œλ₯Ό 생성해야 ν•œλ‹€.(MUST)

6.5.6 406 Not Acceptable

406 (Not Acceptable) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ—μ„œ μˆ˜μ‹ λœ 사전 ν˜‘μƒ 헀더 ν•„λ“œ(Section 5.3)에 따라 λŒ€μƒ λ¦¬μ†ŒμŠ€κ°€ μ‚¬μš©μž μ—μ΄μ „νŠΈκ°€ μˆ˜μš©ν•  수 μžˆλŠ” ν˜„μž¬ ν‘œν˜„μ„ 가지고 μžˆμ§€ μ•ŠμœΌλ©°, μ„œλ²„κ°€ κΈ°λ³Έ ν‘œν˜„μ„ μ œκ³΅ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.5.7 408 Request Timeout

408(Request Timeout) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ λŒ€κΈ°ν•  μ€€λΉ„κ°€ 된 μ‹œκ°„ 내에 μ™„μ „ν•œ μš”μ²­ λ©”μ‹œμ§€ λ₯Ό μˆ˜μ‹ ν•˜μ§€ μ•Šμ•˜μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

  • 408은 μ„œλ²„κ°€ 계속 λŒ€κΈ°ν•˜κΈ° λ³΄λ‹€λŠ” 컀λ„₯μ…˜μ„ μ’…λ£Œν•˜κΈ°λ‘œ κ²°μ •ν•˜μ˜€μŒμ„ μ˜λ―Έν•˜λ―€λ‘œ, μ„œλ²„λŠ” μ‘λ‹΅μœΌλ‘œ β€œclose” 컀λ„₯μ…˜ μ˜΅μ…˜([RFC7230]의 Section 6.1) 을 λ³΄λ‚΄μ•Όν•œλ‹€.(SHOULD)

6.5.8 409 Conflict

409 (Conflict) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ˜ ν˜„μž¬ μƒνƒœμ™€ μΆ©λŒν•˜μ—¬ μš”μ²­μ„ μ™„λ£Œν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

PUT μš”μ²­μ— λŒ€μ‘ν•˜μ—¬ 좩돌이 λ°œμƒν•  κ°€λŠ₯성이 κ°€μž₯ λ†’λ‹€. 예λ₯Ό λ“€μ–΄ 버전 지정이 μ‚¬μš© 쀑이고 PUT에 μžˆλŠ” ν‘œν˜„μ— 이전 (μ„œλ“œ νŒŒν‹°) μš”μ²­μ— μ˜ν•΄ μˆ˜ν–‰λœ λ¦¬μ†ŒμŠ€μ™€ μΆ©λŒν•˜λŠ” λ¦¬μ†ŒμŠ€μ˜ 변경사항이 ν¬ν•¨λœ 경우, μ›μ„œλ²„λŠ” μš”μ²­μ„ μ™„λ£Œν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ 409 응닡을 μ‚¬μš©ν•  수 μžˆλ‹€. 이 경우, 응닡 ν‘œν˜„μ—λŠ” κ°œμ • 이λ ₯에 κΈ°μ΄ˆν•œ 차이λ₯Ό λ³‘ν•©ν•˜λŠ” 데 μœ μš©ν•œ 정보가 포함될 수 μžˆλ‹€.

6.5.9 410 Gone

410 (Gone) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μ›μ„œλ²„μ—μ„œ 더 이상 μ‚¬μš©ν•  수 μ—†μœΌλ©° 이 쑰건이 영ꡬ적일 κ°€λŠ₯성이 μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 원본 μ„œλ²„κ°€ 쑰건이 μ˜κ΅¬μ μΈμ§€ μ—¬λΆ€λ₯Ό μ•Œ 수 μ—†κ±°λ‚˜ 확인할 수 μžˆλŠ” κΈ°λŠ₯이 μ—†λŠ” 경우, λŒ€μ‹ μ— μƒνƒœ μ½”λ“œ 404(Not Found)λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

6.5.10 411 Length Required

411 (Length Required) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μ •μ˜λœ Content-Length ([RFC7230]의 Section 3.3.2) μ—† μš”μ²­μ„ 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€.

6.5.11 413 Payload Too Large

413 (Payload Too Large) μƒνƒœ μ½”λ“œλŠ” μš”μ²­ νŽ˜μ΄λ‘œλ“œκ°€ μ„œλ²„κ°€ μ²˜λ¦¬ν•  의ν–₯이 μžˆκ±°λ‚˜ 처리 ν•  수 μžˆλŠ” 것보닀 크기 λ•Œλ¬Έμ—, μ„œλ²„κ°€ μš”μ²­μ„ 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€.

6.5.12 414 URI Too Long

414 (URI Too Long) μƒνƒœ μ½”λ“œλŠ” μš”μ²­ λŒ€μƒ([RFC7230]의 Section 5.3)이 μ„œλ²„κ°€ ν•΄μ„ν•˜λ €λŠ” 것보닀 κΈΈκΈ° λ•Œλ¬Έμ—, μ„œλ²„κ°€ μš”μ²­μ˜ 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€. 이 λ“œλ¬Έ 쑰건은 ν΄λΌμ΄μ–ΈνŠΈκ°€ κΈ΄ 쿼리 정보가 μžˆλŠ” GET μš”μ²­μœΌλ‘œ POST μš”μ²­μ„ λΆ€μ μ ˆν•˜κ²Œ λ³€ν™˜ν–ˆμ„ λ•Œ, ν΄λΌμ΄μ–ΈνŠΈκ°€ β€œblack hole” λ¦¬λ””λ ‰μ…˜(예: 자체 접미사λ₯Ό κ°€λ¦¬ν‚€λŠ” λ¦¬λ‹€μ΄λ ‰νŠΈλœ URI 접두사)둜 내렀갔을 λ•Œ, λ˜λŠ” μ„œλ²„κ°€ 잠재적인 λ³΄μ•ˆ ꡬ멍을 μ΄μš©ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 곡격을 받을 λ•Œμ—λ§Œ λ°œμƒν•  수 μžˆλ‹€.

6.5.13 415 Unsupported Media Type

415 (Unsupported Media Type) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ 이 λ©”μ„œλ“œλ‘œ μ§€μ›ν•˜μ§€ μ•ŠλŠ” ν˜•μ‹μ˜ νŽ˜μ΄λ‘œλ“œκ°€ 있기 λ•Œλ¬Έμ—, μ›μ„œλ²„κ°€ μš”μ²­μ„ 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€. ν˜•μ‹ λ¬Έμ œλŠ” μš”μ²­μ— ν‘œν˜„λœ Content-Type λ˜λŠ” Content-Encoding λ˜λŠ” 데이터λ₯Ό 직접 κ²€μ‚¬ν•œ 결과일 수 μžˆλ‹€.

6.5.14 417 Expectation Failed

417 (Expectation Failed) μƒνƒœ μ½”λ“œλŠ” μš”μ²­μ˜ Expect 헀더 ν•„λ“œ(Section 5.1.1)에 주어진 κΈ°λŒ€μΉ˜λ₯Ό μΈλ°”μš΄λ“œ μ„œλ²„ 쀑 ν•˜λ‚˜ 이상이 μΆ©μ‘±ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.5.15 426 Upgrade Required

426 (Upgrade Required) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ ν˜„μž¬ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ μš”μ²­μ„ μˆ˜ν–‰ν•˜κΈ°λ₯Ό κ±°λΆ€ν•˜μ§€λ§Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€λ₯Έ ν”„λ‘œν† μ½œλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•œ ν›„ μš”μ²­μ„ μˆ˜ν–‰ν•  μ˜μ‚¬κ°€ μžˆμŒμ„ λ‚˜ 타낸닀.

  • μ„œλ²„λŠ” λ°˜λ“œμ‹œ ν•„μš”ν•œ ν”„λ‘œν† μ½œμ„ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ 426 μ‘λ‹΅μœΌλ‘œ Upgrade 헀더 ν•„λ“œλ₯Ό 전솑해야 ν•œλ‹€.(MUST) ([RFC7230]의 Section 6.7).

예λ₯Ό λ“€μ–΄,

HTTP/1.1 426 Upgrade Required Upgrade: HTTP/3.0 Connection: Upgrade Content-Length: 53 Content-Type: text/plain

이 μ„œλΉ„μŠ€λŠ” HTTP/3.0 ν”„λ‘œν† μ½œ μ‚¬μš©μ„ ν•„μš”λ‘œ ν•œλ‹€.

6.6 Server Error 5xx

μƒνƒœ μ½”λ“œμ˜ 5xx (Server Error) 등급은 μ„œλ²„κ°€ μš”μ²­λœ λ©”μ„œλ“œλ₯Ό 잘λͺ»ν–ˆκ±°λ‚˜ μˆ˜ν–‰ν•  수 μ—†μŒμ„ μ•Œκ³  μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. HEAD μš”μ²­μ— μ‘λ‹΅ν•˜λŠ” 경우λ₯Ό μ œμ™Έν•˜κ³ , μ„œλ²„λŠ” 였λ₯˜ 상황에 λŒ€ν•œ μ„€λͺ…κ³Ό μΌμ‹œμ  쑰건인지 영ꡬ적인 쑰건인지λ₯Ό ν¬ν•¨ν•˜λŠ” ν‘œν˜„μ„ 보내야 ν•œλ‹€.

6.6.1 500 Internal Server Error

500 (Internal Server Error) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν–‰ν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” 예기치 μ•Šμ€ 쑰건을 λ§Œλ‚¬μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.6.2 501 Not Implemented

501(Not Implemented) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ κΈ°λŠ₯을 μ§€μ›ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 이것은 μ„œλ²„κ°€ μš”μ²­ λ©”μ„œλ“œλ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•˜κ³  μ–΄λ–€ λ¦¬μ†ŒμŠ€μ—λ„ 그것을 지원할 수 없을 λ•Œ μ μ ˆν•œ λŒ€μ‘μ΄λ‹€.

6.6.3 502 Bad Gateway

502 (Bad Gateway) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ κ²Œμ΄νŠΈμ›¨μ΄ λ˜λŠ” ν”„λ½μ‹œ 역할을 ν•˜λŠ” λ™μ•ˆ μš”μ²­μ„ μ΄ν–‰ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” λ™μ•ˆ μ•‘μ„ΈμŠ€ν•œ μΈλ°”μš΄λ“œ μ„œλ²„λ‘œλΆ€ν„° 잘λͺ»λœ 응닡을 μˆ˜μ‹ ν–ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.6.4 503 Service Unavailable

503 (Service Unavailable) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ ν˜„μž¬ μΌμ‹œμ μΈ κ³ΌλΆ€ν•˜ λ˜λŠ” μ˜ˆμ •λœ μœ μ§€λ³΄μˆ˜λ‘œ 인해 μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚΄λ©°, μ΄λŠ” μ–΄λŠ 정도 μ§€μ—°λœ 후에 완화될 κ°€λŠ₯성이 λ†’λ‹€.

  • μ„œλ²„λŠ” Retry-After 헀더 ν•„λ“œ(Section 7.1.3)λ₯Ό 보내 ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­μ„ μž¬μ‹œλ„ν•˜κΈ° 전에 λŒ€κΈ°ν•  μ‹œκ°„μ„ μ œμ•ˆν•  수 μžˆλ‹€.(MAY)

6.6.5 504 Gateway Timeout

504 (Gateway Timeout) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ κ²Œμ΄νŠΈμ›¨μ΄ λ˜λŠ” ν”„λ½μ‹œ 역할을 ν•˜λŠ” λ™μ•ˆ μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ” μ—…μŠ€νŠΈλ¦Ό μ„œλ²„λ‘œλΆ€ν„° μ μ‹œμ— 응닡을 받지 λͺ»ν–ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

6.6.6 505 HTTP Version Not Supported

505 (HTTP Version Not Supported) μƒνƒœ μ½”λ“œλŠ” μ„œλ²„κ°€ μš”μ²­ λ©”μ‹œμ§€μ— μ‚¬μš©λœ HTTP의 μ£Όμš” 버전을 μ§€μ›ν•˜μ§€ μ•Šκ±°λ‚˜ 지원을 거뢀함을 λ‚˜νƒ€λ‚Έλ‹€.

Last updated