๊ฐœ๋ฐœ ์ง€์‹/HTTP ์ง€์‹

๐ŸŒ 4XX (Client Error) ์ƒํƒœ ์ฝ”๋“œ - ์ด์ •๋ฆฌ ๋ชจ์Œ

์ธํŒŒ_ 2023. 1. 5. 08:14

4xx-http

4XX Client Error

4xx ๋ฒˆ๋Œ€์˜ ์ƒํƒœ ์ฝ”๋“œ๋“ค์€ ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ž˜๋ชป๋œ ๋ฌธ๋ฒ• ๋“ฑ์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๊ณ  ๊ทธ ์›์ธ์ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์žˆ์Œ์„ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์ž˜๋ชป ๊ตฌ์„ฑ๋œ ์š”์ฒญ ๋ฉ”์„ธ์ง€ ๊ทœ์น™ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์€ URL ์š”์ฒญ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

4xx-http
4xx-http


400 Bad Request

  • Bad Request โ‡ข ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž˜๋ชป๋œ ์š”์ฒญ์„ ๋ณด๋ƒ„์„ ์˜๋ฏธ
  • ํด๋ผ์ด์–ธํŠธ์˜ ์ž˜๋ชป๋œ ์š”์ฒญ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์ดํ•ดํ• ์ˆ˜๊ฐ€ ์—†์–ด ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ์„ ๋œปํ•œ๋‹ค.
  • ์ฃผ๋กœ ์š”์ฒญ ๊ตฌ๋ฌธ, ๋ฉ”์‹œ์ง€ ๋“ฑ์˜ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋กœ ์ธํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๋‹น๋˜๋ฉฐ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ API ์ŠคํŽ™์ด ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ 400 ์ƒํƒœ์ฝ”๋“œ๋ฅผ ๋‚ด๋ฑ‰๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์˜ ์š”์ฒญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ์žฌ์ „์†กํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
  • ์„œ๋ฒ„๋Š” ์ƒํƒœ ์ฝ”๋“œ์™€ ๋”๋ถˆ์–ด ๋ฐ”๋””์— ์—๋Ÿฌ ์ด์œ ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

400 Bad Request

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋ฐ”๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์ด ์„œ๋ฒ„๊ฐ€ ์ •์˜ํ•œ ์œ ํšจ์„ฑ์— ๋งž๋Š”์ง€ ํ™•์ธ ํ›„ ์ง„ํ–‰ํ•œ๋‹ค. ๋งŒ์ผ ์ด๋Ÿฌํ•œ ๊ฒ€์ฆ์ด ์—†๋‹ค๋ฉด ๋ฌด์ž‘์ • 5XX ์„œ๋ฒ„ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ์—, ์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์ด์ „ ์‚ฌ์ „์— ๋ฏธ๋ฆฌ ์˜ˆ๋ฐฉํ•œ๋‹ค๋Š” ์ฐจ์›์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

 

๐Ÿ“ 400 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์˜ณ์ง€์•Š์€ path ํ˜•์‹์˜ ์š”์ฒญ์„ ํ•œ๋‹ค. (์œ ํšจํ•˜์ง€ ์•Š์€ url)

400 Bad Request

 

2. ์„œ๋ฒ„๋Š” ์‚ฌ์ „์— ํด๋ผ์ด์–ธํŠธ์˜ ์ž˜๋ชป์ธ๊ฑธ ์ธ์ง€ํ•˜๊ณ  400 ์‘๋‹ต์„ ๋‚ด์ค€๋‹ค.

400 Bad Request

์ฐธ๊ณ ๋กœ 400 Bad Request ์‘๋‹ต์„ ํ• ๋•Œ, ๋”ธ๋ž‘ ์ƒํƒœ ์ฝ”๋“œ๋งŒ ๋ณด๋‚ด์ง€๋ง๊ณ , ์œ„์™€ ๊ฐ™์ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์œ„์น˜(path, query, body), ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’, ์—๋Ÿฌ ์ด์œ ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋ถ„๋ช… ํด๋ผ์ด์–ธํŠธ์˜ ์ž˜๋ชป์ธ๋ฐ ์–ด๋–ค ๋ถ€๋ถ„์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋ฉด ์žฌ๋น ๋ฅด๊ฒŒ ํด๋ผ์ด์–ธํŠธ์ธก์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


401 Unauthorized

  • Unauthorized โ‡ข ์š”์ฒญ์ž๋Š” ์ธ์ฆ(authentication) ๋˜์ง€ ์•Š์•„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ์„ ํ‘œํ˜„
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ธ์ฆ์ด ์—†์–ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด ๋กœ๊ทธ์ธ ํ•˜์ง€์•Š์œผ๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ)
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ธ์ฆํ•˜๋ผ๊ณ  ์š”๊ตฌํ•˜๋Š” ๋‚ด์šฉ์˜ ์‘๋‹ต์„ WWW-Authenticate ํ—ค๋”์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ธ์ฆ์„ ๊ฑฐ์ณ ์š”์ฒญ์„ ์žฌ์ „์†กํ•˜๋ฉด ๋œ๋‹ค.
  • ์ฐธ๊ณ ๋กœ 401 ์‘๋‹ต์€ Unauthorized ๊ฐ€ ์•„๋‹Œ Unauthenticated ๊ฐ€ ์•Œ๋งž๋Š” ๋‹จ์–ด์ด๋‹ค.
์‚ฌ์‹ค 401 Unauthorized ์ƒํƒœ ๋ฉ”์„ธ์ง€๋Š” ์ž˜๋ชป ๋ช…๋ช…๋œ ๋‹จ์–ด์ด๋‹ค.
๋ณดํ†ต ์šฐ๋ฆฌ๊ฐ€ '๊ถŒํ•œ'์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๊ฒƒ์—” ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€/์Šน์ธ(Authorization) ๋‘๊ฐ€์ง€ ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ธ์ฆ(Authentication)์€ ๋กœ๊ทธ์ธ๊ณผ ๊ฐ™์€ ํšŒ์› ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ๋งํ•˜๋Š”๊ฑฐ๊ณ , ์Šน์ธ(Authorization)์€ ํšŒ์› ๊ฐ€์ž…์€ ๋˜์—ˆ์ง€๋งŒ ๋“ฑ๊ธ‰ ์ œํ•œ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋”ฐ๋ผ์„œ 401 ์ƒํƒœ ๋ฉ”์„ธ์ง€๋Š” Unauthenticated ๊ฐ€ ๋” ์•Œ๋งž๋Š” ํ‘œํ˜„์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Unauthorization์€ 403 Forbidden ์ƒํƒœ ์ฝ”๋“œ์˜ ๊ฐœ๋…์ด ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋’ค์˜ 403 Forbidden ์ƒํƒœ ์ฝ”๋“œ์—์„œ ๋‹ค์‹œํ•œ๋ฒˆ ๋‹ค๋ฃฌ๋‹ค.

 

๐Ÿ“ 401 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

HTTP์—๋Š” ๊ธฐ๋ณธ(basic) ์ธ์ฆ๊ณผ ๋‹ค์ด์ œํŠธ์ŠคํŠธ ์ธ์ฆ์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ์ค‘ ๊ธฐ๋ณธ ์ธ์ฆ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณธ๋‹ค.

401 Unauthorized

 

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค.

401 Unauthorized

 

2. ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€๋Š” ์‚ฌ์ดํŠธ์— ํšŒ์› ๊ฐ€์ž…์„ ํ•œ ์‚ฌ๋žŒ๋งŒ ๋ณผ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ๋ฆฌ์†Œ์Šค์™€ ๋”๋ถˆ์–ด WWW-Authenticate ํ—ค๋”์™€ ํ•จ๊ป˜ 401 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•˜๋ผ๊ณ  ์•Œ๋ฆฐ๋‹ค.

401 Unauthorized

 

3. ๋ธŒ๋ผ์šฐ์ €์—์„œ 401 ์‘๋‹ต์„ ๋ฐ›๊ณ  ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ™”๋ฉด์„ ๋„์šด๋‹ค.

401 Unauthorized

 

4. ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž๋กœ ๋ถ€ํ„ฐ ID:PASSWORD ๋ฅผ ์ž…๋ ฅ ๋ฐ›์€ ํ›„ base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ Authorization ํ—ค๋”์— ๊ทธ ๊ฐ’์„ ๋‹ด์•„ ์„œ๋ฒ„๋กœ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

401 Unauthorized
401 Unauthorized

 

5. ์„œ๋ฒ„๋Š” Authorization ํ—ค๋”๊ฐ’์„ ๋””์ฝ”๋”ฉํ•˜๊ณ , ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ •ํ™•ํ•œ์ง€ ํ™•์ธํ•˜๊ณ , ๋ฌธ์ œ ์—†์œผ๋ฉด HTTP 200 OK ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์š”์ฒญ๋ฐ›์•˜๋˜ ๋ฌธ์„œ๋ฅผ ๋ณด๋‚ธ๋‹ค.

401 Unauthorized


402 Payment Required

  • ์›๋ž˜๋Š” ๋””์ง€ํ„ธ ๊ฒฐ์ œ ์‹œ์Šคํ…œ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, ํ˜„์žฌ ์ด ์ƒํƒœ ์ฝ”๋“œ๋Š” ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.
  • ๋‚˜์ค‘์— ์‚ฌ์šฉ๋  ๊ฒƒ์„ ๋Œ€๋น„ํ•ด ์˜ˆ์•ฝ๋œ ๋น„ํ‘œ์ค€ ์‘๋‹ต ์ฝ”๋“œ

403 Forbidden

  • Forbidden โ‡ข ์š”์ฒญ์ž๋Š” ์Šน์ธ(autorization)๋˜์ง€ ์•Š์•„ ์ž‘์—…์„ ์ง„ํ–‰ํ• ์ˆ˜ ์—†์Œ
  • ์ธ์ฆ ์ž๊ฒฉ์€ ์ฆ๋ช…๋˜์—ˆ์œผ๋‚˜, ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋ถˆ์ถฉ๋ถ„ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์˜ ์Šน์ธ์„ ๊ฑฐ๋ถ€ํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์˜ˆ๋ฅผ๋“ค์–ด ํšŒ์›์—๋„ ๋“ฑ๊ธ‰์ด ์กด์žฌํ•˜๋Š”๋ฐ, ๋งŒ์ผ admin ๋“ฑ๊ธ‰์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ admin ๋“ฑ๊ธ‰์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์„ ์š”์ฒญํ•˜์˜€์„ ๋•Œ 403 Forbidden ๋ฉ”์‹œ์ง€๋ฅผ ์‘๋‹ต๋ฐ›๊ฒŒ ๋œ๋‹ค.
  • 401 Unauthorized๊ณผ ๋‹ค๋ฅธ ์ ์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. (์ธ์ฆ ๋˜์—ˆ์œผ๋‹ˆ)

403 Forbidden

 

๐Ÿ“Œ ์ธ์ฆ(Authentication) ๊ณผ ์Šน์ธ(Authorization) ์ฐจ์ด์ 

401 Unauthorized ์ƒํƒœ์ฝ”๋“œ์—์„œ๋„ ํ•œ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์ธ์ฆ(Authentication) ๊ณผ ์Šน์ธ(Authorization)์€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์—„์—ฐํ•œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • ์ธ์ฆ(Authentication) : ๋ณธ์ธ์ด ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธ (๋กœ๊ทธ์ธ)
  • ์Šน์ธ(Authorization) : ํŠน์ • ๋ฆฌ์†Œ์Šค์— ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ (๋“ฑ๊ธ‰ ๊ถŒํ•œ)

Authentication-Authorization

์นดํŽ˜๋‚˜ ํฌํ„ธ ์‚ฌ์ดํŠธ๋ฅผ ์˜ˆ๋กœ๋“ค์ž๋ฉด, ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ๋ ค๊ณ  ํฌ์ŠคํŒ… ๋ชฉ๋ก์„ ๋ˆŒ๋ €์„๋•Œ '๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค' ๊ฒฝ๊ณ ์ฐฝ๊ณผ ํ•จ๊ป˜ ๋กœ๊ทธ์ธ ์ธ์ฆ์ด ์š”๊ตฌ๋œ๋‹ค๋ฉด ์ธ์ฆ(401) ๋˜์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋‹ค.

๊ทธ๋ž˜์„œ ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ  ๊ฒŒ์‹œ๋ฌผ์— ๋“ค์–ด๊ฐˆ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์—” ๊ฒŒ์‹œ๋ฌผ์˜ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์œผ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, '์ƒˆ์‹น ๋“ฑ๊ธ‰ ๋ถ€ํ„ฐ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค' ๋ผ๋Š” ๊ฒฝ๊ณ ์ฐฝ์ด ๋œฌ๋‹ค๋ฉด ์Šน์ธ(403) ๋˜์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋‹ค. ์ฆ‰, ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ํ˜„์žฌ ์š”์ฒญ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…์„ ํ–ˆ์œผ๋‹ˆ ๋ˆ„๊ตฐ์ง€๋Š” ์•Œ์ง€๋งŒ, ํšŒ์› ๋“ฑ๊ธ‰์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๋Š” ์š”์ฒญํ•œ ์ž์›์— ์ ‘๊ทผํ•œ ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ฐจ๋‹จ ํ•œ ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์ธ์ฆ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ์Šน์ธ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์›๋ฆฌ์ด๋‹ค.


404 Not Found

  • Not Found โ‡ข ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ž์›์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ
  • ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ URL์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ •๋ง ์œ ๋ช…ํ•œ ์ƒํƒœ ์ฝ”๋“œ.
  • 404 ํŽ˜์ด์ง€๋ฅผ ๋„์šฐ๋Š” ๋งํฌ๋Š” ๋Œ€์ฒด๋กœ ๋ธŒ๋กœํฐ ๋งํฌ(broken link) ๋˜๋Š” ๋ฐ๋“œ ๋งํฌ(dead link)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๋‹ค๋งŒ 404 ์‘๋‹ต์„ ๋งˆ์ฃผ์ณค๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์„œ๋ฒ„์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์ธ์ฆ๋ฐ›์ง€ ์•Š์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•˜์—ฌ ์ด ์‘๋‹ต์„ 403 ๋Œ€์‹ ์— 404๋ฅผ ์ „์†กํ•˜๋Š” ์ผ€์ด์Šค๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๋˜ํ•œ 404 ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์  ๋˜๋Š” ์˜๊ตฌ์ ์œผ๋กœ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š๋‹ค. ๋งŒ์ผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์  ์‚ญ์ œ๋˜์—ˆ๋‹ค๋ฉด 404 ์ƒํƒœ ์ฝ”๋“œ ๋Œ€์‹  410 Gone ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ๋งž๋‹ค.

404 Not Found

 

๐Ÿ“Œ REST API ์ž…์žฅ์—์„œ์˜ 404

REST API ์„ค๊ณ„์—์„œ 404 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ
  2. ์ž์›์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ

๋Œ€๋ถ€๋ถ„ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ฒฝ๋กœ(๋ผ์šฐํŒ…)์— ๋Œ€ํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ค€๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์กด์žฌํ•˜์ง€์•Š๋Š” URL ์š”์ฒญ ๊ฐ™์€ ๊ฒฝ์šฐ ์•Œ์•„์„œ 404๋กœ ์‘๋‹ตํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋ฅผ ๊ตณ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€๋ฆฌํ•  ํ•„์š”๋Š” ์—†๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ž์›์˜ ๊ฒฝ์šฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด GET /users/1 ์š”์ฒญ์ผ ๊ฒฝ์šฐ ์ •์ƒ์ ์ธ ๊ฒฝ๋กœ์ผ ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ ์œ ์ € ID 1์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ž์›์— ๋Œ€ํ•œ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์ง„ํ–‰์„ ํ•ด๋ฒ„๋ฆฌ๋ฉด ํ›„์† ์ž‘์—…์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ 5XX ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

REST์—์„  URI๊ฐ€ ์ž์›์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๋กœ๊ฐ€ ๊ณง ์ž์›์ด๊ธฐ๋„ ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฝ๋กœ์™€ ์ž์› ๋‘๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ํ™•์ธ์„ ํ•œ๋’ค์— ์—†๋‹ค๋ฉด ๋ช…ํ™•ํ•˜๊ฒŒ 404 ์‘๋‹ต์„ ํ•ด์ฃผ๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.


405 Method Not Allowed

  • Method Not Allowed โ‡ข ์š”์ฒญ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋ฉ”์†Œ๋“œ์ž„์„ ์˜๋ฏธ
  • ์š”์ฒญ URL์— ๋Œ€ํ•ด ์ง€์›ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋กœ ์š”์ฒญ๋ฐ›์•˜์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ๋“ค์–ด ์–ด๋Š api์— ๋Œ€ํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๊ฑฐ๋‚˜์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋•Œ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์–ด๋–ค ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด, ์‘๋‹ต์— Allow ํ—ค๋”๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ๋‹จ, GET์™€ HEAD๋Š” ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— 405 ์‘๋‹ต์œผ๋กœ ์ œํ•œํ• ์ˆ˜ ์—†๋‹ค.

 

๐Ÿ“ 405 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ OPTIONS ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ ๋ชฉ๋ก์„ ์š”๊ตฌํ•œ๋‹ค.

405 Method Not Allowed

 

2. ์„œ๋ฒ„๋Š” ์š”์ฒญ์ด ํ—ˆ์šฉ๋œ HTTP ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก์„ Allow ํ—ค๋”๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

405 Method Not Allowed

 

3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์€ ๋ฉ”์†Œ๋“œ์ธ POST๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

405 Method Not Allowed

 

4. ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋ฉ”์†Œ๋“œ ์š”์ฒญ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” 405 ์‘๋‹ต์„ ๋‚ด๋ฆฐ๋‹ค.

405 Method Not Allowed
405 Method Not Allowed

[ allow ํ—ค๋” ์™€ access-control-allow-methods ํ—ค๋” ์ฐจ์ด์  ]

์šฐ์„  ๋‘˜๋‹ค ์š”์ฒญ์ด ํ—ˆ์šฉ๋œ ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก๋“ค์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, access-control-allow-methods ํ—ค๋”๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ajax ์š”์ฒญ์ผ๋•Œ ์‘๋‹ต๋ฐ›๊ณ , allow ํ—ค๋”๋Š” ์ผ๋ฐ˜ HTTP ์š”์ฒญ์— ๋ฐ˜ํ™˜๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

406 Not Acceptable

  • Not Acceptable โ‡ข ์ฝ˜ํ…์ธ  ํ˜‘์ƒ์— ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—†์Œ
  • ์ด ์‘๋‹ต์€ ์„œ๋ฒ„๊ฐ€ ์„œ๋ฒ„ ์ฃผ๋„ ์ฝ˜ํ…์ธ  ํ˜‘์ƒ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์—์„œ ๋ณด๋‚ธ ๊ทœ๊ฒฉ์— ์–ด๋– ํ•œ ์ฝ˜ํ…์ธ ๋„ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ ๋ณด๋‚ด๋Š” ์‘๋‹ต์ด๋‹ค.
  • ์ข…์ข… ์„œ๋ฒ„๋Š” ํด๋ผ์—๊ฒŒ ์™œ ์š”์ฒญ์ด ๋งŒ์กฑ๋  ์ˆ˜ ์—†์—ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ํ—ค๋”๋ฅผ ํฌํ•จ์‹œํ‚จ๋‹ค.
  • ๋‹จ, ํ˜„์—…์—์„œ๋Š” ์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

406 Not Acceptable

 

๐Ÿ“ 406 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ํ•œ๊ตญ์–ด๋กœ ๋œ ๋‰ด์Šค ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•œ๋‹ค.

406 Not Acceptable

 

2. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค.ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋Š” ํ•œ๊ตญ์–ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ์— ํ•ด๋‹น๋˜๋Š” ์–ธ์–ด๊ฐ’์ด ์—†์–ด ํ˜‘์ƒ์— ์‹คํŒจํ•˜๊ฒŒ ๋˜์–ด 406์‘ ์‘๋‹ตํ•˜๊ฒŒ ๋œ๋‹ค.

406 Not Acceptable

๋‹ค๋งŒ ์ด๋Ÿฌํ•œ ์ƒํƒœ ์ฝ”๋“œ ํ๋ฆ„ ํ˜•ํƒœ๋Š” ํ˜„์—…์—์„  ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ๊ธฐ ์–ด๋ ค์šด ์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ตํ•˜๋Š” ๋Œ€์‹ , ๊ด€๋ จ ํ—ค๋”๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ชฝ์œผ๋กœ ์œ ๋„ํ•˜๋„๋ก ์„ค๊ณ„๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํ˜‘์ƒ ํ—ค๋”์— ํ˜‘์ƒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ๋”ธ๋ž‘ ko ๋งŒ ์จ์„œ ์ผ์น˜ํ•˜๋Š” ์–ธ์–ด ๊ฐ’์ด ์—†์œผ๋ฉด 406์„ ๋‹ตํ•˜๋Š” ๋Œ€์‹  ๊ทธ๋ƒฅ ๊ธฐ๋ณธ ์–ธ์–ด ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.


407 Proxy Authentication Required

  • Proxy Authentication Required โ‡ข ํ”„๋ก์‹œ ์ธ์ฆ์„ ์š”๊ตฌ
  • 401 Unauthorized ์™€ ๊ฐ™์œผ๋‚˜, ํ”„๋ก์‹œ ๋ฒ„์ „์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. (์—ฌ๊ธฐ์„  Authentication ์ด๋ผ๊ณ  ์ œ๋Œ€๋กœ ํ‘œํ˜„๋˜์—ˆ๋‹ค)
  • ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ค‘๊ฐœ ํ”„๋ก์‹œ ์„œ๋ฒ„์— ์˜ํ•ด ์™„๋ฃŒ๋œ ์ธ์ฆ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค.
  • ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์ ‘๊ทผ ์ •์ฑ…์„ ์ค‘์•™ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ๊ด€๋ฆฌ ํฌ์ธํŠธ๋กœ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๊ด€๋ จ๋œ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋‹จ, ํ”„๋ก์‹œ์™€ ์›น ์„œ๋ฒ„ ์ธ์ฆ ํ—ค๋”๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค.

 

๐Ÿ“ 407 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

407 Proxy Authentication Required
407 Proxy Authentication Required


408 Request Timeout

  • Request Timeout โ‡ข ์š”์ฒญ์ด ๋„ˆ๋ฌด ์ปค ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์–ด ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•„๋‹ˆํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋‹ซ์Œ
  • ๋งŒ์ผ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์™„์ˆ˜ํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ์ด ์ƒํƒœ ์ฝ”๋“œ๋กœ ์‘๋‹ตํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋Š์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ˜น์€ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ๋งค์šฐ ๋Š๋ฆฌ๊ฑฐ๋‚˜ ๋Š์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 
  • ์„œ๋ฒ„์˜ ํƒ€์ž„ ์•„์›ƒ ๊ธฐ์ค€์€ ์„œ๋ฒ„ ์„ค์ •๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค.
  • 408 ์‘๋‹ต์€ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ, ์‘๋‹ตํ• ๋•Œ Connection: close ํ—ค๋”๋ฅผ ๋ฐ˜๋“œ์‹œ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด ์‘๋‹ต์€ Chrome, Firefox 27+, IE9์™€ ๊ฐ™์€ ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ์›น์„œํ•‘ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด HTTP ์‚ฌ์ „ ์—ฐ๊ฒฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์ผ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•˜๋ฉด ์ข…์ข… ๋ณผ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต์ด๊ธฐ๋„ ํ•˜๋‹ค.

408 Request Timeout

 

๐Ÿ“ 408 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” 10K์— ๋‹ฌํ•˜๋Š” PDF ํŒŒ์ผ์„ ์„œ๋ฒ„์— ์š”์ฒญํ•œ๋‹ค.

408 Request Timeout

 

2. ์„œ๋ฒ„๋Š” ์š”์ฒญ ์ฒ˜๋ฆฌ์ค‘ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๊ฐ„ํ—์ ์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ „์ฒด ์ „์†ก ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค๊ณ  ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ณ  Connection ํ—ค๋”๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์ทจ์†Œํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋‹ซ์Œ์„ ํ‘œ์‹œํ•˜๊ณ  ์‘๋‹ตํ•˜๊ฒŒ ๋œ๋‹ค.

408 Request Timeout


409 Conflict

  • Conflict โ‡ข ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์„œ๋ฒ„์˜ ์ƒํƒœ์™€ ์ถฉ๋Œ์ด ๋ฐœ์ƒ
  • ์š”์ฒญ ์ฒ˜๋ฆฌ ์ค‘ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ƒ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋ชจ์ˆœ์ด ์ƒ๊ธด ๊ฒฝ์šฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์—ฌํƒ€ 4XX ์ƒํƒœ ์ฝ”๋“œ ์ฒ˜๋Ÿผ ์š”์ฒญ์— ์žˆ์–ด ๋ฉ”์†Œ๋“œ ์ง€์› ์œ ๋ฌด๋‚˜, ์ž์› ์œ ๋ฌด, ์ธ์ฆ ์œ ๋ฌด์™€ ๊ฐ™์€ ํ™•์‹คํ•œ ์˜ค๋ฅ˜ ์ƒํ™ฉ๋“ค์„ ์ œ์™ธํ•œ ๋กœ์ง ์˜ค๋ฅ˜ ์ƒํ™ฉ์—์„œ ์“ฐ์ธ๋‹ค.
  • ์‚ฌ์‹ค ์ถฉ๋Œ(conflict)์ด๋ผ๋Š” ๊ฒƒ์€ ์ถ”์ƒ์ ์ธ ์˜ค๋ฅ˜ ํ˜„์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌํƒ€ 4XX ์ƒํƒœ ์ฝ”๋“œ์— ์†ํ•˜์ง€ ์•Š์€ ์• ๋งคํ•œ ์˜ค๋ฅ˜์˜ ์ƒํ™ฉ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์‘๋‹ต์€ ์ถฉ๋Œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ณธ๋ฌธ์„ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“ 409 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

์˜ˆ๋ฅผ๋“ค์–ด ํšŒ์› ํƒˆํ‡ด๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์„œ๋น„์Šค ๋กœ์ง ํŠน์„ฑ์ƒ ํšŒ์› ํƒˆํ‡ด๋ฅผ ํ•˜๋ ค๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒŒ์‹œ๊ธ€์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜์—ฌ์•ผ ํƒˆํ‡ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๊ณ  ํ• ๋•Œ ๊ทธ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฅผ 403 Conflict ๋ฅผ ํ†ตํ•ด ์•Œ๋ฆฐ๋‹ค.

์ด๋ฐ–์— ๋ณ‘์› ๊ฒ€์ง„ ์˜ˆ์•ฝ์„ ์ง„ํ–‰ํ•˜๋ ค๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์‹œ๊ฐ„์ด ์ด๋ฏธ ์˜ˆ์•ฝ์ด ์žกํžŒ ์‹œ๊ฐ„๋Œ€์—ฌ์„œ ์˜ˆ์•ฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ• ๋•Œ๋„ 409 ์‘๋‹ต์„ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋œ๋‹ค.

 

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ํšŒ์› ์‚ญ์ œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

409 Conflict

 

2. ์„œ๋ฒ„๋Š” ํšŒ์› ํƒˆํ‡ด๋ฅผ ์œ„ํ•ด์„  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ƒ ์šฐ์„  ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋จผ์ € ์ง€์›Œ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ณธ๋ฌธ์— ๋‹ด์€์ฑ„ 409 ์‘๋‹ต์„ ํ•œ๋‹ค.

409 Conflict


410 Gone

  • Gone โ‡ข ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌํžˆ ์‚ญ์ œ๋จ
  • 404 Not Found์™€ ๋น„์Šทํ•˜๋‚˜ 410 ์‘๋‹ต์€ ์š”์ฒญํ•œ ์ปจํ…์ธ ๊ฐ€ ์„œ๋ฒ„์—์„œ ์˜๊ตฌํžˆ ์‚ญ์ œ๋˜์–ด ์ „๋‹ฌํ•ด ์ค„ ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

410 Gone


411 Length Required

  • Length Required โ‡ข ์š”์ฒญ ๋ฉ”์‹œ์ง€์— Content-Length ํ—ค๋”๊ฐ€ ์žˆ์„ ๊ฒƒ์„ ์š”๊ตฌ
  • ์„œ๋ฒ„์—์„œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”๋กœ ํ•˜๋Š” Content-Length ํ—ค๋” ํ•„๋“œ๊ฐ€ ์—†์–ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๊ฑฐ์ ˆํ• ๋•Œ ์‘๋‹ต๋œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— chunk ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ๋•Œ, ์ธ์ฝ”๋”ฉ์„ ๋ฐ›์•„๋“ค์—ฌ์ฃผ์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋„ ์ด์šฉ๋œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ํ—ค๋”์— Content-Length ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žฌ์š”์ฒญํ•˜๋ฉด ๋œ๋‹ค.

412 Precondition Failed

  • Precondition Failed โ‡ข ํด๋ผ์ด์–ธํŠธ์˜ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ์‹คํŒจ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์บ์‹œ์— ๋Œ€ํ•œ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์„ ํ–ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ์„ ๋•Œ ์‘๋‹ต๋œ๋‹ค. (Etag๋‚˜ ์ˆ˜์ •์ผ์งœ ๋ถˆ์ผ์น˜)
  • 304 Not Modified ์ฒ˜๋Ÿผ ์บ์‹œ ๊ด€๋ จ ์š”์ฒญ์—์„œ ์“ฐ์ด๋Š” ์ฝ”๋“œ์ด๋‹ค.
  • ๋‹จ, POST, PUT, DELETE ๋ฉ”์†Œ๋“œ ๋“ฑ GET, HEAD ์ด์™ธ์˜ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์š”์ฒญํ–ˆ์„๋•Œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ด ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ฅด๋ฉด '์—…๋ฐ์ดํŠธ ์†์‹ค' ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. 
    ์—…๋ฐ์ดํŠธ ์†์‹ค์€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์“ฐ๊ณ  ์žˆ๊ณ  ํ•œ ๋ช… ์ด์ƒ์ด ์˜ค๋ž˜๋œ ๋ฒ„์ „์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ, ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•จ์œผ๋กœ์จ ์ค‘๊ฐ„์— ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•œ๋‹ค.

 

๐Ÿ“ 412 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

์˜ˆ๋ฅผ๋“ค์–ด ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ์—์„œ ํ‚ค๋ณด๋“œ๊ฐ€ 1๊ฐœ๋งŒ ๋‚จ์€ ์ƒํƒœ๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด๋•Œ ๋‘๋ช…์˜ ์†Œ๋น„์ž๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ํ‚ค๋ณด๋“œ ๊ตฌ๋งค ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ์ ‘์†ํ•œ ์†Œ๋น„์ž๊ฐ€ ๋จผ์ € ๊ตฌ๋งค ์š”์ฒญ์„ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 1๊ฐœ ๋ฐ–์— ์•ˆ๋‚จ์€ ํ‚ค๋ณด๋“œ๋Š” ํ’ˆ์ ˆ์ด ๋˜๊ฒŒ ๋˜๊ณ  ์‡ผํ•‘๋ชฐ ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํ‚ค๋ณด๋“œ ๊ตฌ๋งค ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ํ’ˆ์ ˆ์ด ๋˜์—ˆ๋‹ค๊ณ  ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์•„์ง ๋ชจ๋ฐ”์ผ๋กœ ์ ‘์†ํ•œ ์†Œ๋น„์ž๋Š” ์‹ค์ œ๋กœ๋Š” ํ’ˆ์ ˆ๋ฌ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ old ํŽ˜์ด์ง€๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๊ตฌ๋งคํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋ฐ”์ผ ์†Œ๋น„์ž๊ฐ€ ๊ตฌ๋งค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ๋ฐ”๋กœ 412 Precondition failed ๋ฅผ ์‘๋‹ตํ•˜์—ฌ ๊ตฌ๋งค ๋กœ์ง์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

412 Precondition Failed

 

๐Ÿ“‰ 412 ์ƒํƒœ ํ๋ฆ„

์œ„์˜ ๊ณผ์ •์„ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œ๋‹ค.

412 Precondition Failed

  1. ๋จผ์ € ๋ชจ๋ฐ”์ผ์—์„œ ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ๋กœ ์ ‘์†ํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์บ์‹ฑํ•œ๋‹ค.
  2. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๋Š” ๋ชจ๋ฐ”์ผ์—๊ฒŒ Etag: x๋ฅผ ๋‚ด๋ ค์ค€๋‹ค.
  3. ์›น์—์„œ๋„ ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ๋กœ ์ ‘์†ํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์บ์‹ฑํ•œ๋‹ค.
  4. ๋ฌธ์„œ ์ž์ฒด๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์œผ๋‹ˆ ๋˜‘๊ฐ™์ด ์„œ๋ฒ„๋Š” ์›น์—๊ฒŒ Etag: x๋ฅผ ๋‚ด๋ ค์ค€๋‹ค.
  5. ์ด๋•Œ ์›น์ด ๋จผ์ € ๊ตฌ๋งค ์š”์ฒญ(PATCH)๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.
  6. ์„œ๋ฒ„๋Š” If-Match ํ—ค๋”๊ฐ’๊ณผ Etag ํ—ค๋”๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋‘˜์ด x๋กœ ์ผ์น˜ํ•˜๋‹ˆ ๋ฌธ์„œ๋ฅผ ์ตœ์‹ ์ƒํƒœ๋กœ ์—…๋ฐ์ดํŠธ(ํ’ˆ์ ˆ)ํ•˜๊ณ  Etag๋ฅผ y๋กœ ๊ฐฑ์‹ ํ•˜๊ณ  ์‘๋‹ตํ•œ๋‹ค.
  7. ๊ทธํ›„์— ๋ชจ๋ฐ”์ผ์ด ๊ตฌ๋งค์š”์ฒญ์„ ํ•œ๋‹ค. 
  8. ํ•˜์ง€๋งŒ ๋ชจ๋ฐ”์ผ์ด ๊ฐ–๊ณ ์žˆ๋Š” Etag๋Š” x๊ณ  ์„œ๋ฒ„์— ์žˆ๋Š” ๋ฌธ์„œ์˜ Etag๋Š” ๋ฐฉ๊ธˆ ์›น์— ์˜ํ•ด์„œ y๋กœ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์œผ๋‹ˆ, ๋ถˆ์ผ์น˜๊ฐ€ ๋˜๊ณ  ์„œ๋ฒ„๋Š” ๊ตฌ๋งค ๋กœ์ง์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  412 ์—๋Ÿฌ ์‘๋‹ต์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ†š 304 ์™€ 412 ์ƒํƒœ ์ฝ”๋“œ ์ฐจ์ด

๋‹จ์ˆœํžˆ ์•ž์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฅผ ๋ฌผ์–ด๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

304 Not Modified ์™€ 412 Precondition failed ๋Š” ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ ๊ด€๋ จ ํ—ค๋”์™€ ์—ฐ๊ด€๋œ ์ƒํƒœ ์ฝ”๋“œ๋กœ์„œ, ํด๋ผ์ด์–ธํŠธ์˜ ๋ฆฌ์†Œ์Šค ์ˆ˜์ • ์ƒํƒœ์™€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค ์ˆ˜์ • ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์‘๋‹ตํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿผ ๋ฌด์Šจ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ค๊ฑด ์ •์ƒ ์ฝ”๋“œ์ด๊ณ  ์–ด๋–ค๊ฑด ์˜ค๋ฅ˜ ์ฝ”๋“œ ์ธ์ง€ ํ˜ผ๋™์ด ์˜ฌ์ˆ˜ ์žˆ๋Š”๋ฐ ์˜์™ธ๋กœ ๊ฐ„๋‹จํ•˜๋‹ค.

 → 304 ์‘๋‹ต์€ GET ๊ณผ HEAD ๋ฉ”์†Œ๋“œ์—๋งŒ ๋™์ž‘ํ•œ๋‹ค.

 → 412 ์‘๋‹ต์€ ์ด๋ฅผ ์ œ์™ธํ•œ POST, PUT, PATCH ๋“ฑ ๋ฉ”์†Œ๋“œ์—๋งŒ ๋™์ž‘ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์˜ ์‡ผํ•‘๋ชฐ ์˜ˆ์ œ์—์„œ 412 ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋œ ์ด์œ ๋Š” PATCH ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์—‘์„ธ์Šค ํ•˜๋ ค๊ณ  ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 


413 Payload Too Large

  • Payload Too Large โ‡ข ์š”์ฒญ ๋ณธ๋ฌธ์ด ์„œ๋ฒ„์—์„œ ์ •์˜ํ•œ ํ•œ๊ณ„๋ณด๋‹ค ๋„ˆ๋ฌด ์ปค ์ฒ˜๋ฆฌํ• ์ˆ˜ ์—†์Œ
  • 413 Request Entity Too Large ๋กœ๋„ ์“ฐ์—ฌ์ง
  • ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๊ณ„๋ฅผ ๋„˜์€ ํฌ๊ธฐ์˜ ๋ณธ๋ฌธ์„ ํฌํ•จํ•œ ์š”์ฒญ์„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋ƒˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ์„ ๋Š๊ฑฐ๋‚˜ ํ˜น์€ Retry-After ํ—ค๋” ํ•„๋“œ๋กœ ๋Œ๋ ค๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค.

413 Payload Too Large


414 URI Too Long

  • URI Too Long โ‡ข ์š”์ฒญ URI์ด ๋„ˆ๋ฌด ๊ธธ์–ด ์ฒ˜๋ฆฌํ• ์ˆ˜ ์—†์Œ
  • 413 Request URI Too Long ๋กœ๋„ ์“ฐ์—ฌ์ง
  • ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๊ณ„๋ฅผ ๋„˜์€ ๊ธธ์ด์˜ ์š”์ฒญ URI๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋ƒˆ์„๋•Œ ์‘๋‹ต๋œ๋‹ค.

414 URI Too Long


415 Unsupported Media Type

  • Unsupported Media Type โ‡ข ์š”์ฒญํ•œ ๋ฏธ๋””์–ด ํฌ๋งท์€ ์„œ๋ฒ„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Œ
  • ์„œ๋ฒ„๊ฐ€ ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‚ด์šฉ ์œ ํ˜•์˜ ๋ณธ๋ฌธ์„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ผ๋•Œ ์‘๋‹ต๋œ๋‹ค.

416 Range Not Satisfiable

  • Range Not Satisfiable โ‡ข Range ํ—ค๋” ํ•„๋“œ์— ์š”์ฒญํ•œ ์ง€์ • ๋ฒ”์œ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์—†์Œ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ํŠน์ • ๋ฒ”์œ„๋ฅผ ์š”์ฒญํ–ˆ๋Š”๋ฐ, ๊ทธ ๋ฒ”์œ„๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ๋งž์ง€ ์•Š์„ ๋•Œ ์‘๋‹ต๋œ๋‹ค.

417 Expectation Failed

  • Expectation Failed โ‡ข Expect ์š”์ฒญ ํ—ค๋” ํ•„๋“œ๋กœ ์š”์ฒญํ•œ ์˜ˆ์ƒ ๋ฐ˜ํ™˜ ์ฝ”๋“œ๋ฅผ ๋งŒ์กฑ ์‹œํ‚ฌ ์ˆ˜ ์—†์Œ
  • Expect ์š”์ฒญ ํ—ค๋”์™€ ์—ฐ๊ด€์žˆ๋Š” ์ƒํƒœ ์ฝ”๋“œ (์„ฑ๊ณตํ•˜๋ฉด 100, ์‹คํŒจํ•˜๋ฉด 417)

 

๐Ÿ“ 417 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ 10K ์šฉ๋Ÿ‰์˜ PDF ํŒŒ์ผ ์ „์†ก์„ ์š”์ฒญํ•œ๋‹ค. ์ด๋•Œ ์„œ๋ฒ„์—๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€ ๋ฏธ๋ฆฌ ๋ฌผ์–ด๋ณด๊ธฐ ์œ„ํ•ด Expect ํ—ค๋”๋กœ 100 ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•œ๋‹ค.

417 Expectation Failed

 

2. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋Š” 10K์— ๋‹ฌํ•˜๋Š” PDF ํŒŒ์ผ์„ ๋ณด๋‚ด์ค„์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 417์œผ๋กœ ํ™”๋‹ตํ•œ๋‹ค.

417 Expectation Failed


418 I’m a teapot

  • I’m a teapot โ‡ข ๋งŒ์šฐ์ ˆ ๋†๋‹ด ์ƒํƒœ ์ฝ”๋“œ
  • ์ด ์˜ค๋ฅ˜๋Š” 1998๋…„ ๋งŒ์šฐ์ ˆ ๋†๋‹ด์ด์—ˆ๋˜ ํ•˜์ดํผ ํ…์ŠคํŠธ ์ปคํ”ผ ํฌํŠธ ์ œ์–ด ๊ทœ์•ฝ(Hyper Text Coffee Pot Control Protocol)์˜ ๋ ˆํผ๋Ÿฐ์Šค๋‹ค.

418 teapot


420 Method Failure or Enhance your calm

  • ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋ฅผ โ€‹โ€‹๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋น„๊ณต์‹ ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜
  • Spring Framework์—์„œ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„๊ณต์‹ ์‘๋‹ต์ฝ”๋“œ๋กœ๋„ ์“ฐ์˜€์Œ (์ง€๊ธˆ์€ ์•ˆ์“ฐ์ž„)

421 Misdirected Request

  • Misdirected Request โ‡ข ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์˜ ์š”์ฒญ
  • ์˜๋„ํ•˜์ง€ ์•Š์€ ์š”์ฒญ์„ ๋ฐ›์•„ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ„

422 Unprocessable Entity

  • Unprocessable Entity โ‡ข ์„œ๋ฒ„์—์„œ ๋ณธ๋ฌธ์„ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์—†์Œ
  • ์ด ์‘๋‹ต์€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ•˜๊ณ  ์š”์ฒญ ๋ฌธ๋ฒ•๋„ ์˜ฌ๋ฐ”๋ฅด์ง€๋งŒ ์š”์ฒญ๋œ ์ง€์‹œ๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ„
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด validation ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๋ฐ˜ํ™˜

422 Unprocessable Entity


423 Locked

  • Locked โ‡ข ๋ฆฌ์†Œ์Šค๋Š” ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์ž ๊ฒจ์žˆ์Œ
  • ์š”์ฒญ์— ๋Œ€ํ•œ ๋Œ€์ƒ ํŒŒ์ผ ๋˜๋Š” ํด๋”๊ฐ€ ์ž ๊ฒจ ์žˆ์„๋•Œ ๋ฐ˜ํ™˜
  • WebDAV์— ์‚ฌ์šฉ๋˜๋Š” ์‘๋‹ต ์ฝ”๋“œ

424 Failed Dependency

  • ์š”์ฒญ๋œ ์ž‘์—…์ด ์‹คํŒจํ•œ ๋‹ค๋ฅธ ์ž‘์—…์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ
  • ์ฆ‰, ์ด์ „ ์š”์ฒญ์ด ์‹คํŒจํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์˜ ์š”์ฒญ๋„ ์‹คํŒจํ•˜์˜€์Œ์„ ์˜๋ฏธ
  • WebDAV์— ์‚ฌ์šฉ๋˜๋Š” ์‘๋‹ต ์ฝ”๋“œ

426 Upgrade Required

  • Upgrade Required โ‡ข ํ”„๋กœํ† ์ฝœ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ถŒ๊ณ 
  • ์„œ๋ฒ„๊ฐ€ ํ˜„์žฌ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ ์˜์‚ฌ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” ์‘๋‹ต ์ฝ”๋“œ์ด๋‹ค.
  • ์˜ˆ๋ฅผ๋“ค์–ด ์„œ๋ฒ„๋Š” HTTP/1.1 ๋ฒ„์ „์€ ๋ฐ›์ง€์•Š๊ณ  HTTP/2 ์ด์ƒ๋งŒ ๋ฐ›๋Š”๋‹ค๊ณ  ํ• ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP/1.1๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ƒํ™ฉ์„ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„๋Š” ์‘๋‹ตํ• ๋•Œ Upgrade ํ—ค๋”์— ํ•„์š”๋กœ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.
  • ํ”„๋กœํ† ์ฝœ ๊ด€๋ จ 101 Switching Protocols ์ƒํƒœ ์ฝ”๋“œ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

 

๐Ÿ“ 426 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ HTTP/1.1๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

426 Upgrade Required

 

2. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋Š” HTTP/1.1 ์š”์ฒญ ์ž์ฒด๋Š” ๋ฐ›์ง€๋งŒ, ์ด ํ”„๋กœํ† ์ฝœ๋กœ ์„œ๋ฒ„ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Upgrade ํ—ค๋”์— ๊ถŒ๊ณ  ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ์žฌํ•˜๊ณ  426 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

426 Upgrade Required

 

3. ํด๋ผ์ด์–ธํŠธ๋Š” HTTP/2๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ HTTP/1.1๋กœ ํ†ต์‹ ํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„์—๊ฒŒ ํ”„๋กœํ† ์ฝœ ์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์„ ํ•œ๋‹ค.

426 Upgrade Required

 

4. ์„œ๋ฒ„๋Š” 101 ์‘๋‹ต๊ณผ ํ•จ๊ป˜ HTTP/2 ํ”„๋กœํ† ์ฝœ๋กœ ์ „ํ™˜์„ ์‹œ์ž‘ํ•œ๋‹ค.

426 Upgrade Required

 

5. ์ด์ œ ํด๋ผ์ด์–ธํŠธ๋Š” HTTP/2 ๋กœ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ฒŒ ๋œ๋‹ค.

426 Upgrade Required


428 Precondition Required

  • Precondition Required โ‡ข ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์ด ์š”๊ตฌ๋จ
  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์„ ์กฐ๊ฑด๋ถ€๋กœ ํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ If-Match์™€ ๊ฐ™์€ ํ•„์ˆ˜ ์ „์ œ ์กฐ๊ฑด๋ถ€ ํ—ค๋”๊ฐ€ ๋ˆ„๋ฝ๋ฌ์„๋•Œ ๋ฐ˜ํ™˜๋œ๋‹ค.
  • ๋งŒ์ผ ์กฐ๊ฑด๋ถ€ ํ—ค๋”๊ฐ€ ์„œ๋ฒ„ ์ธก ๋ฆฌ์†Œ์Šค ์ƒํƒœ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‘๋‹ต์€ 412 Precondition Failed๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ“ 428 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ „์— ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•ด ๋ณต์‚ฌ๋ณธ์„ ์–ป์–ด ์บ์‹ฑํ•ด๋†“์•˜๊ณ , ๊ทธ ์ดํ›„ ๋ฆฌ์†Œ์Šค ์ˆ˜์ • ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ƒํ™ฉ์ด๋‹ค. ์ด๋•Œ ์กฐ๊ฑด๋ถ€ ํ—ค๋”๋ฅผ ๋„ฃ์ง€ ์•Š์€์ฑ„๋กœ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.

428 Precondition Required

 

2. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋Š” ์บ์‹ฑ ๊ด€๋ จ ์—…๋ฐ์ดํŠธ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ฒŒ ํ•˜์ง€์•Š๊ธฐ ์œ„ํ•ด 428 ์‘๋‹ต์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

428 Precondition Required

 

3. ํด๋ผ์ด์–ธํŠธ๋Š” ์กฐ๊ฑด๋ถ€ ํ—ค๋”๋ฅผ ๋„ฃ๊ณ  ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

428 Precondition Required


429 Too Many Requests

  • Too Many Requests โ‡ข ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ์šฐ
  • ์„œ๋น„์Šค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๋Ÿ‰์„ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด์šฉ๋œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด API ์‚ฌ์šฉ๊ฑด์ˆ˜๋ฅผ ์‹œ๊ฐ„๋‹น 100๊ฐœ ๋กœ ์ œํ•œ)
  • ํ˜น์€ ๋””๋„์Šค์™€ ๊ฐ™์€ ๋น„์ •์ƒ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž์›์„ ๋งˆ๊ตฌ๋งˆ๊ตฌ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•ด ์š”์ฒญ ์ž„์‹œ ์ œํ•œ์„ ๊ฑธ ์ˆ˜ ์žˆ๋‹ค.
  • Retry-After ํ—ค๋”๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ช‡์ดˆ ๋’ค์— ์žฌ์‹œ๋„ ํ•  ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

429 Too Many Requests

 

๐Ÿ“ 429 ์ƒํƒœ์ฝ”๋“œ ํ๋ฆ„ ์˜ˆ์‹œ

1. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋งˆ๊ตฌ๋งˆ๊ตฌ ๋ณด๋‚ธ๋‹ค.

429 Too Many Requests

 

2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Retry-After ํ—ค๋”๋ฅผ ํ†ตํ•ด 1800์ดˆ ๋’ค์— ์š”์ฒญ์„ ํ•˜๋ผ๊ณ  ์‘๋‹ตํ•œ๋‹ค.

429 Too Many Requests


โš”๏ธ ์„œ๋ฒ„ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ฐฉ์–ด์ฑ…

 

๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ฐฉ์–ด

๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ธฐ๋ฐ€์„ฑ ๊ณต๊ฒฉ(Brute-force)์€ ํ•ด์ปค๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด, ํŒจ์Šค์›Œ๋“œ๊ฐ’์„ ๋ฌด์ž‘์œ„๋กœ ๋„ฃ๊ณ  ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ฌด์ฐจ๋ณ„์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ์ œํ•œ์„ ๋‘์ง€์•Š๊ฒŒ๋˜๋ฉด ํšŒ์›์˜ ๊ธฐ๋ฐ€์„ฑ์ด ํ”ผํ•ด๋ฅผ ์ž…์„์ˆ˜ ์žˆ์œผ๋ฉฐ ๋˜ํ•œ ์„œ๋ฒ„ ์ž์ฒด์˜ ๊ฐ€์šฉ์„ฑ์—๋„ ํ”ผํ•ด๋ฅผ ์ž…์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์— ๋Œ€๋น„ํ•ด ์ธ์ฆ๊ด€๋ จ API ์š”์ฒญ์˜ ๊ฒฝ์šฐ n ์‹œ๊ฐ„ ๋™์•ˆ nํšŒ๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ๋ฃฐ์„ ์ •ํ•˜๊ณ , ์ด๊ฒƒ์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ 429 ์‘๋‹ต์„ ํ•˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.

429 Too Many Requests
https://www.imperva.com/learn/application-security/brute-force-attack/

 

๋””๋„์Šค ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ฐฉ์–ด

๋„์Šค(Dos) ๊ณต๊ฒฉ ํ˜น์€, ๋””๋„์Šค(D-Dos) ๊ณต๊ฒฉ์€ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด ํƒˆ์ทจ๊ฐ€ ๋ชฉ์ ์ด ์•„๋‹Œ ๋ฌด์ฐจ๋ณ„์ ์ธ ์š”์ฒญ์œผ๋กœ ์„œ๋ฒ„ ์ž์ฒด์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ค˜์„œ ์„œ๋น„์Šค๋ฅผ ๋จนํ†ต์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ด ๊ณต๊ฒฉ์„ ๋‹จ์ผ์ด ํ•˜๋ฉด ๋„์Šค ๊ณต๊ฒฉ์ด๊ณ  ๋‹จ์ฒด๊ฐ€ ํ•˜๋ฉด ๋””๋„์Šค ๊ณต๊ฒฉ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” n ์‹œ๊ฐ„ ๋™์•ˆ nํšŒ๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ๋ฃฐ์„ ์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‹จ 429 ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์„œ๋ฒ„์˜ ๊ฐ€์šฉ์„ฑ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์„ ์™„๋ฒฝํžˆ ๋ง‰์„์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์„œ๋ฒ„ ์ž์ฒด์— ์ง€์†์ ์ธ ์š”์ฒญ ๊ณต๊ฒฉ์ด ์˜ค๋Š” ๊ฒƒ ์ž์ฒด๋Š” ๋ง‰์„์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 429 ์‘๋‹ต์„ ํ•ด๋„ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๊ณ„์† ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—,  ๋”ฐ๋ผ์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๋‹จ์—์„œ IP๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์„œ๋ฒ„๋Š” 429 ์‘๋‹ต์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ์„œ๋ฒ„ ๋‚ด๋ถ€ ๋กœ์ง์„ ๋“ค์‘ค์‹œ๊ณ  ๋‹ค๋‹ˆ๋Š” ๊ฒƒ์„ ๋ฐฉ์–ด๋Š” ํ• ์ˆ˜์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด๋Š” IP๋‚˜ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ œํ•œ ์ฒ˜๋ฆฌ๋ฅผํ•˜๊ณ  ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” 429 ์‘๋‹ต์„ ํ†ตํ•ด API ์ œํ•œ์„ ์„ค์ •ํ•  ํ•„์š”์„ฑ์ด ์žˆ๋‹ค.

429 Too Many Requests
https://ko.safetydetectives.com/blog/ddos-%EA%B3%B5%EA%B2%A9%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EB%B0%8F-%EA%B7%B8-%EB%B0%A9%EC%A7%80-%EB%B0%A9%EB%B2%95/


431 Request Header Fields Too Large

  • Request Header Fields Too Large โ‡ข ํ—ค๋” ํ•„๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ
  • ์ด ์š”์ฒญ ํ—ค๋” ํ•„๋“œ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ ๋˜๋Š” ๋‹จ์ผ ํ—ค๋” ํ•„๋“œ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ์‘๋‹ต๋œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ํ—ค๋” ํ•„๋“œ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ธ ํ›„ ์žฌ์š”์ฒญ ํ•˜๋ฉด ๋œ๋‹ค.

  • Unavailable For Legal Reasons โ‡ข ๋ฒ•์ ์ธ ์ด์œ ๋กœ ๋น„ํ—ˆ์šฉ๋จ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฒ•์  ์ด์œ ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ถˆ๋ฒ•์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. (์ •๋ถ€์— ์˜ํ•ด ๊ฒ€์—ด๋œ ์›นํŽ˜์ด์ง€ ๋“ฑ)

451 Unavailable For Legal Reasons


# ์ฐธ๊ณ ์ž๋ฃŒ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๊น€์˜ํ•œ

HTTP ์™„๋ฒฝ๊ฐ€์ด๋“œ

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

https://sanghaklee.tistory.com/61

https://http.dev/status

https://www.oreilly.com/library/view/http-the-definitive/1565925092/ch06s07.html

https://www.keycdn.com/

https://blogs.mulesoft.com/api-integration/patterns/advanced-api-patterns-with-raml/