Skip to content

Latest commit

ย 

History

History
340 lines (211 loc) ยท 9.99 KB

File metadata and controls

340 lines (211 loc) ยท 9.99 KB

HTTP vs HTTPS

HTTP์™€ HTTPS๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์™€ ์›น ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ์œ ๋ฌด์ด๋ฉฐ, HTTPS๋Š” HTTP์— ๋ณด์•ˆ(Secure)์ด ์ถ”๊ฐ€๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

  • HTTP: ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ์—†์ด ๊ทธ๋Œ€๋กœ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต์šฉ ์™€์ดํŒŒ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ํ•ด์ปค๊ฐ€ ํ†ต์‹ ์„ ์—ฟ๋“ฃ๊ฑฐ๋‚˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์œ„ํ—˜์ด ํฝ๋‹ˆ๋‹ค.
  • HTTPS: SSL/TLS ๋ณด์•ˆ ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ œ3์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑ„๋”๋ผ๋„ ํ•ด๋…์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  : https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/

HTTP and HTTPS are communication protocols used by web browsers (clients) and web servers to exchange data. The main difference between them is whether the data is encrypted. HTTPS is the secure version of HTTP.

  • HTTP: Data is transmitted in plain text without encryption. Therefore, on public Wi-Fi or unsecured networks, attackers may eavesdrop on the communication or steal sensitive information.
  • HTTPS: Data is encrypted using SSL/TLS certificates before transmission. As a result, even if a third party intercepts the data, it cannot be easily decrypted or read.

HTTP ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

HTTP๋Š” OSI(Open Systems Interconnection) ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋ชจ๋ธ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. HTTP๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์‚ฌ์ดํŠธ์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ ค๋Š” ๊ฒฝ์šฐ HTTP GET ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๋ฝ์ฒ˜ ์–‘์‹ ์ž‘์„ฑ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์ „์†กํ•˜๋ ค๋Š” ๊ฒฝ์šฐ HTTP PUT ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์„œ๋ฒ„๋Š” ์ˆซ์ž ์ฝ”๋“œ ๋ฐ ๋ฐ์ดํ„ฐ ์–‘์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ HTTP ์‘๋‹ต์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ''' 200 - OK(์ •์ƒ) 400 - Bad request(์ž˜๋ชป๋œ ์š”์ฒญ) 404 - Resource not found(๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ) ์ด๋Ÿฌํ•œ ์š”์ฒญ ๋ฐ ์‘๋‹ต ํ†ต์‹ ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๋ฐฉ์‹์ด๋ฏ€๋กœ World Wide Web์€ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. '''

HTTPS ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

HTTP๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ „์†ก๋œ ์ •๋ณด๋ฅผ ์ œ3์ž๊ฐ€ ๊ฐ€๋กœ์ฑ„๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ†ต์‹ ์— ๋˜ ๋‹ค๋ฅธ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด HTTPS๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTTPS๋Š” HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ SSL ๋ฐ TLS ๊ธฐ์ˆ ์— ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

HTTPS ์›น ์‚ฌ์ดํŠธ๋Š” ๋…๋ฆฝ๋œ ์ธ์ฆ ๊ธฐ๊ด€(CA)์—์„œ SSL/TLS ์ธ์ฆ์„œ๋ฅผ ํš๋“ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›น ์‚ฌ์ดํŠธ๋Š” ์‹ ๋ขฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์ „์— ๋ธŒ๋ผ์šฐ์ €์™€ ์ธ์ฆ์„œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. SSL ์ธ์ฆ์„œ๋Š” ์•”ํ˜ธํ™” ์ •๋ณด๋„ ํฌํ•จํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์™€ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์Šคํฌ๋žจ๋ธ”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— https:// URL ํ˜•์‹์„ ์ž…๋ ฅํ•˜์—ฌ HTTPS ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์˜ SSL ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์‚ฌ์ดํŠธ์˜ ์‹ ๋ขฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํผ๋ธ”๋ฆญ ํ‚ค๊ฐ€ ํฌํ•จ๋œ SSL ์ธ์ฆ์„œ๋ฅผ ํšŒ์‹ ์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ์˜ SSL ์ธ์ฆ์„œ๋Š” ์„œ๋ฒ„ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ธ์ฆ๋˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํผ๋ธ”๋ฆญ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€ ์„ธ์…˜ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„๋Š” ํ”„๋ผ์ด๋น— ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๋…ํ•˜๊ณ  ์„ธ์…˜ ํ‚ค๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์„ธ์…˜ ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ์Šน์ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ๋ชจ๋‘ ๋™์ผํ•œ ์„ธ์…˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตํ™˜ํ•˜๋„๋ก ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

HTTPS ์„ค์ • ๋น„์šฉ์ด HTTP๋ณด๋‹ค ๋” ๋งŽ์ด ๋“œ๋‚˜์š”?

HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„œ๋ฒ„์—์„œ SSL/TLS ์ธ์ฆ์„œ๋ฅผ ํš๋“ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ธ์ฆ ๊ธฐ๊ด€์ด ์ธ์ฆ์„œ ๋“ฑ๋ก ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์—ฐ๊ฐ„ ์š”๊ธˆ์„ ์ฒญ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๋” ์ด์ƒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์ถœ์ฒ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Amazon Web Services(AWS)์—์„œ๋Š” AWS Certificate Manager(ACM)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ACM์€ AWS ์„œ๋น„์Šค ๋ฐ ๋‚ด๋ถ€ ์—ฐ๊ฒฐ ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— SSL/TLS ์ธ์ฆ์„œ๋ฅผ ํ”„๋กœ๋น„์ €๋‹, ๊ด€๋ฆฌ ๋ฐ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ACM์€ SSL/TLS ์ธ์ฆ์„œ๋ฅผ ๊ตฌ๋งค, ์—…๋กœ๋“œ ๋ฐ ๊ฐฑ์‹ ํ•˜๋Š” ์‹œ๊ฐ„ ์†Œ๋ชจ์ ์ธ ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

1. Connectionless ํ”„๋กœํ† ์ฝœ (๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ(Request)์„ ํ–ˆ์„ ๋•Œ, ๊ทธ ์š”์ฒญ์— ๋งž๋Š” ์‘๋‹ต(Response)์„ ๋ณด๋‚ธ ํ›„ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ฒ˜๋ฆฌ๋ฐฉ์‹์ด๋‹ค.

HTTP 1.1 ๋ฒ„์ „์—์„œ ์ปค๋„ฅ์…˜์„ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ , ์š”์ฒญ(Request)์— ์žฌํ™œ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. (HTTP Header)์— keep-alive ์˜ต์…˜์„ ์ฃผ์–ด ์ปค๋„ฅ์…˜์„ ์žฌํ™œ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค. HTTP 1.1 ๋ฒ„์ „์—์„  ๋””ํดํŠธ(default) ์˜ต์…˜์ด๋‹ค. HTTP๊ฐ€ TCP์œ„์—์„œ ๊ตฌํ˜„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—(TCP : ์—ฐ๊ฒฐ ์ง€ํ–ฅ, UDP : ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ) ์—ฐ๊ฒฐ ์ง€ํ–ฅ์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์–˜๊ธฐ๊ฐ€ ์žˆ์–ด ๋…ผ๋ž€์ด ์žˆ์ง€๋งŒ, ์•„์ง๊นŒ์ง„ ๋„คํŠธ์›Œํฌ ๊ด€์ ์—์„œ keep-alive๋Š” ์˜ต์…˜์œผ๋กœ ๋‘๊ณ , ์„œ๋ฒ„ ์ธก์—์„œ ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์ ์ธ ํŠน์„ฑ์œผ๋กœ ์ปค๋„ฅ์…˜ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ๋ช…ํ™•ํ•œ ์žฅ์ ์œผ๋กœ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์œผ๋กœ ์•Œ์•„๋‘์—ˆ๋‹ค.

2. Stateless ํ”„๋กœํ† ์ฝœ

์ปค๋„ฅ์…˜์„ ๋Š๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ๋๋‚˜๋ฉฐ ์ƒํƒœ ์ •๋ณด๋Š” ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ์ด ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ ์ฒซ ๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค ํ•ด๋„, ๋‘ ๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋ฐ์ดํ„ฐ ์œ ์ง€๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์ •๋ณด๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์œผ๋ฉด, ๋งค๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ๋‹ค์‹œ ํ•˜๊ฑฐ๋‚˜,์ƒํ’ˆ์„ ์„ ํƒํ–ˆ๋Š”๋ฐ ๊ตฌ๋งค ํŽ˜์ด์ง€์—์„œ ์„ ํƒํ•œ ์ƒํ’ˆ์˜ ์ •๋ณด๊ฐ€ ์—†๊ฑฐ๋‚˜ ํ•˜๋Š” ๋“ฑ์˜ ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. โ†’ ๋”ฐ๋ผ์„œ, Stateful ๊ฒฝ์šฐ๋ฅผ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด์ ์€ ํฌ๊ฒŒ ์ƒํƒœ ์ •๋ณด์˜ ์ €์žฅ ์œ„์น˜์ด๋‹ค. ์ฟ ํ‚ค๋Š” 'ํด๋ผ์ด์–ธํŠธ(=๋กœ์ปฌ PC)'์— ์ €์žฅํ•˜๊ณ , ์„ธ์…˜์€ '์„œ๋ฒ„'์— ์ €์žฅํ•œ๋‹ค.

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ์„ ํ•  ๋•Œ ํ†ต์‹ ์ด ์—ฐ์†์ ์œผ๋กœ ์ด์–ด์ง€์ง€ ์•Š๊ณ  ํ•œ ๋ฒˆ ํ†ต์‹ ์ด ๋˜๋ฉด ๋Š์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๊ณ„์† ์ธ์ฆ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๊ท€์ฐฎ๊ณ  ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด๋‹ค. ๊ทธ๋Ÿฐ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์ฟ ํ‚ค์™€ ์„ธ์…˜์ด๋‹ค. ์ถœ์ฒ˜: https://dev-coco.tistory.com/61 [์Šฌ๊ธฐ๋กœ์šด ๊ฐœ๋ฐœ์ƒํ™œ:ํ‹ฐ์Šคํ† ๋ฆฌ]

HTTP Status Code

์ƒํƒœ ์ฝ”๋“œ๋ž€?

HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ(Request)์— ๋Œ€ํ•ด ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” 3์ž๋ฆฌ ์ˆซ์ž ์ฝ”๋“œ์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€, ์ธ์ฆ์— ์‹คํŒจํ–ˆ๋Š”์ง€, ์ž˜๋ชป๋œ ์š”์ฒญ์ธ์ง€, ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ:

GET /users/1
HTTP/1.1 200 OK

์œ„ ์‘๋‹ต์€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.


์ƒํƒœ ์ฝ”๋“œ ๋ถ„๋ฅ˜

๋ฒ”์œ„ ์˜๋ฏธ
1xx ์ •๋ณด ์‘๋‹ต
2xx ์„ฑ๊ณต
3xx ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
4xx ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜
5xx ์„œ๋ฒ„ ์˜ค๋ฅ˜

2xx Success

200 OK

์กฐํšŒ ์„ฑ๊ณต

GET /users/1
โ†’ 200 OK

201 Created

์ƒ์„ฑ ์„ฑ๊ณต

POST /users
โ†’ 201 Created

204 No Content

์„ฑ๊ณตํ–ˆ์ง€๋งŒ ์‘๋‹ต Body ์—†์Œ

DELETE /users/1
โ†’ 204 No Content

3xx Redirection

301 Moved Permanently

์˜๊ตฌ ์ด๋™

  • URL์ด ์˜๊ตฌ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ

302 Found

์ž„์‹œ ์ด๋™

  • URL์ด ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ

4xx Client Error

400 Bad Request

์ž˜๋ชป๋œ ์š”์ฒญ

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ˆ„๋ฝ
์ž˜๋ชป๋œ ์š”์ฒญ ํ˜•์‹

401 Unauthorized

์ธ์ฆ ์‹คํŒจ

JWT ์—†์Œ
JWT ๋งŒ๋ฃŒ

ํ•ต์‹ฌ

์ธ์ฆ(Authentication) ๋ฌธ์ œ


403 Forbidden

๊ถŒํ•œ ์—†์Œ

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ์ž API ํ˜ธ์ถœ

ํ•ต์‹ฌ

์ธ์ฆ์€ ๋˜์—ˆ์ง€๋งŒ ๊ถŒํ•œ(Authorization)์ด ์—†์Œ


404 Not Found

๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

์กด์žฌํ•˜์ง€ ์•Š๋Š” ํšŒ์›
์กด์žฌํ•˜์ง€ ์•Š๋Š” API

409 Conflict

ํ˜„์žฌ ์ƒํƒœ์™€ ์ถฉ๋Œ

์ค‘๋ณต ์ด๋ฉ”์ผ ๊ฐ€์ž…
์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ์ฃผ๋ฌธ

422 Unprocessable Entity

์š”์ฒญ ํ˜•์‹์€ ๋งž์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒ€์ฆ ์‹คํŒจ

๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธธ์ด ๋ถ€์กฑ
์ด๋ฉ”์ผ ํ˜•์‹ ์˜ค๋ฅ˜

400 vs 422

400
์š”์ฒญ ์ž์ฒด๊ฐ€ ์ž˜๋ชป๋จ

422
์š”์ฒญ ํ˜•์‹์€ ๋งž์Œ
๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์œ„๋ฐ˜

429 Too Many Requests

์š”์ฒญ ๊ณผ๋‹ค

Rate Limit ์ดˆ๊ณผ

5xx Server Error

500 Internal Server Error

์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜

์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์˜ˆ์™ธ
DB ์˜ค๋ฅ˜

502 Bad Gateway

์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ์‹คํŒจ

Nginx โ†’ API ์„œ๋ฒ„ ์˜ค๋ฅ˜

503 Service Unavailable

์ผ์‹œ์ ์œผ๋กœ ์„œ๋น„์Šค ๋ถˆ๊ฐ€

์„œ๋ฒ„ ์ ๊ฒ€
์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜

504 Gateway Timeout

์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ์‹œ๊ฐ„ ์ดˆ๊ณผ

์™ธ๋ถ€ API ์‘๋‹ต ์ง€์—ฐ

๋น„๊ต

401 vs 403

401

  • ์ธ์ฆ ์‹คํŒจ
  • ๋กœ๊ทธ์ธ ํ•„์š”

403

  • ์ธ์ฆ ์„ฑ๊ณต
  • ๊ถŒํ•œ ์—†์Œ

400 vs 422

400

  • ์š”์ฒญ ์ž์ฒด๊ฐ€ ์ž˜๋ชป๋จ

422

  • ์š”์ฒญ ํ˜•์‹์€ ๋งž์Œ
  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒ€์ฆ ์‹คํŒจ

500 vs 503

500

  • ์„œ๋ฒ„ ์ฝ”๋“œ ๋ฌธ์ œ

503

  • ์„œ๋ฒ„๋Š” ์ •์ƒ
  • ์ ๊ฒ€ ๋˜๋Š” ๊ณผ๋ถ€ํ•˜

  • 200 OK

  • 201 Created

  • 204 No Content

  • 400 Bad Request

  • 401 Unauthorized

  • 403 Forbidden

  • 404 Not Found

  • 409 Conflict

  • 422 Unprocessable Entity

  • 429 Too Many Requests

  • 500 Internal Server Error

  • 502 Bad Gateway

  • 503 Service Unavailable

  • 504 Gateway Timeout