[260115] HTTP ๋ž€ (http ์ธ์ฆ, http ์‘๋‹ต ์ฝ”๋“œ ๋“ฑ)

2026. 1. 15. 18:48ยทํ”„๋กœ๊ทธ๋ž˜๋ฐ
 

HTTP | MDN

๊ฐ€์ด๋“œ์™€ ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด HTTP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ณด์„ธ์š”. HTTP ๊ฐœ์š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋“ค์ž…๋‹ˆ๋‹ค. HTTP๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์˜๋„๋œ ์šฉ๋„๋ฅผ ์•Œ์•„๋ณด์„ธ์š”. HTTP ์บ์‹œ ์บ์‹ฑ์€ ๋น 

developer.mozilla.org

HTTP ๋ž€ (Hypertext Transfer Protocol) 

  • HTML ๊ณผ ๊ฐ™์€ ํ•˜์ดํผ๋ฏธ๋””์–ด ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ 
  • ์›น์—์„œ ์ด๋ค„์ง€๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ๊ธฐ์ดˆ. 
  • ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. 
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ํ•˜๊ธฐ ์œ„ํ•ด HTTP ์—ฐ๊ฒฐ์„ ์—ฐ ๋‹ค์Œ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋Š” "ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„" ๋ชจ๋ธ์„ ๋”ฐ๋ฆ„. 
  • ๋ฌด์ƒํƒœ(state-less) ํ”„๋กœํ† ์ฝœ๋กœ, ์„œ๋ฒ„๊ฐ€ ๋‘ ์š”์ฒญ ๊ฐ„์— ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋„ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ. 

์ถœ์ฒ˜: https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Overview

 

1) HTTP ํ—ค๋”์˜ ํ™•์žฅ์„ฑ 

์ถœ์ฒ˜ : https://bytebytego.com/guides/important-things-about-http-headers-you-may-not-know/

  • ํ—ค๋”๋Š” ์ปจํ…์ŠคํŠธ์— ๋”ฐ๋ผ ๊ทธ๋ฃนํ•‘๋  ์ˆ˜ ์žˆ์Œ. 
    • Request header: ํŽ˜์น˜๋  ๋ฆฌ์†Œ์Šค๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ž์ฒด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ํ—ค๋”.
    • Response header: ์œ„์น˜ ๋˜๋Š” ์„œ๋ฒ„ ์ž์ฒด์— ๋Œ€ํ•œ ์ •๋ณด(์ด๋ฆ„, ๋ฒ„์ „ ๋“ฑ)์™€ ๊ฐ™์ด ์‘๋‹ต์— ๋Œ€ํ•œ ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๊ฐ–๋Š” ํ—ค๋” 
    • ๋“ฑ๋“ฑ 
  • ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์œผ๋กœ ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์คŒ. 
  • ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ์ด๋ฆ„๊ณผ ์ฝœ๋ก  ' : ' ๋‹ค์Œ์— ์˜ค๋Š” ๊ฐ’(์ค„ ๋ฐ”๊ฟˆ ์—†์ด) ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Œ. 
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋กœ์šด ํ—ค๋”์˜ ์‹œ๋งจํ‹ฑ(์˜๋ฏธ)์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•œ ํ•ฉ์˜๋งŒ ํ•œ๋‹ค๋ฉด, ์–ธ์ œ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ. 
  • ์ฆ‰, ํ—ค๋”(Header)๋ผ๋Š” ๊ณต๊ฐ„ ๋•๋ถ„์— ์ธ์ฆ, ์บ์‹ฑ, ๋ณด์•ˆ ๋“ฑ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ณ„์† ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.

 

2) HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ - ์š”์ฒญ (request) 

Method: ์ˆ˜ํ–‰ํ•  ์ž‘์—…์˜ ์ข…๋ฅ˜GET(๊ฐ€์ ธ์˜ค๊ธฐ), POST(์ €์žฅํ•˜๊ธฐ), PUT, DELETE

Path: ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜ (URL์—์„œ ๋„๋ฉ”์ธ ์ œ์™ธ)/api/v1/login

Headers : ์š”์ฒญ์— ๋Œ€ํ•œ ๋ถ€๊ฐ€ ์ •๋ณด (๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ธ์ฆ ํ† ํฐ)Authorization: Bearer <JWT>, Content-Type: application/json

Body : ์‹ค์ œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ (GET์€ ๋ณดํ†ต ์—†์Œ){"id": "eunsil", "pw": "1234"}

 

3) HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ - ์‘๋‹ต (response) 

Status Code : ์š”์ฒญ์˜ ๊ฒฐ๊ณผ ์ƒํƒœ200(์„ฑ๊ณต), 401(์ธ์ฆ ์•ˆ๋จ), 403(๊ถŒํ•œ ์—†์Œ)

Headers : ์‘๋‹ต์— ๋Œ€ํ•œ ๋ถ€๊ฐ€ ์ •๋ณดContent-Type: application/json, Set-Cookie

Body : ์„œ๋ฒ„๊ฐ€ ๋Œ๋ ค์ค€ ๋ฐ์ดํ„ฐ{"accessToken": "eyJ...", "user": "eunsil"}

 

 

 

HTTP ์ƒํƒœ ์ฝ”๋“œ 

  • http ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”๋“œ 
  • 5๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ ์ง 

1) ์ •๋ณด ์‘๋‹ต 

  • ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜์—ˆ์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์†๋จ์„ ๋‚˜ํƒ€๋ƒ„ 
์ƒํƒœ ์ฝ”๋“œ ๋ช…์นญ ์„ค๋ช… 
100 Continue ์ง€๊ธˆ๊นŒ์ง€์˜ ์ƒํƒœ๋Š” ๊ดœ์ฐฎ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๊ณ„์†ํ•˜๊ฑฐ๋‚˜ ์ด๋ฏธ ์™„๋ฃŒํ•œ ๊ฒฝ์šฐ ๋ฌด์‹œํ•ด๋„ ๋จ์„ ์•Œ๋ฆผ
101 Switching Protocol ํด๋ผ์ด์–ธํŠธ์˜ Upgrade ํ—ค๋” ์š”์ฒญ์— ๋”ฐ๋ผ ์„œ๋ฒ„๊ฐ€ ํ”„๋กœํ† ์ฝœ์„ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ž„์„ ์•Œ๋ฆผ
102 Processing ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜์—ฌ ์ฒ˜๋ฆฌ ์ค‘์ด์ง€๋งŒ, ์•„์ง ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์—†๋Š” ์ƒํƒœ (WebDAV ์ „์šฉ)
103 Early Hints ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ์ค€๋น„ํ•˜๋Š” ๋™์•ˆ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์ „ ๋กœ๋”ฉ(preloading)์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

 

2) ์„ฑ๊ณต์ ์ธ ์‘๋‹ต 

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์„œ๋ฒ„์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„ 
์ƒํƒœ ์ฝ”๋“œ ๋ช…์นญ ์„ค๋ช…
200 OK (์ค‘์š”) ์š”์ฒญ ์„ฑ๊ณต. GET์€ ๋ฆฌ์†Œ์Šค ์ „์†ก, POST๋Š” ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ์ „์†ก ๋“ฑ์„ ์˜๋ฏธํ•จ
201 Created (์ค‘์š”) ์š”์ฒญ ์„ฑ๊ณต ๋ฐ ๊ทธ ๊ฒฐ๊ณผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋จ (์ฃผ๋กœ POST ์ดํ›„)
202 Accepted ์š”์ฒญ ์ˆ˜์‹ ์€ ๋˜์—ˆ์œผ๋‚˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์Œ (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์ฃผ๋กœ ์‚ฌ์šฉ)
204 No Content ์š”์ฒญ์€ ์„ฑ๊ณตํ–ˆ์œผ๋‚˜ ์‘๋‹ต ๋ฐ”๋””์— ๋ณด๋‚ผ ์ฝ˜ํ…์ธ ๊ฐ€ ์—†์Œ (๋ณดํ†ต ์‚ญ์ œ ์š”์ฒญ ํ›„ ์‚ฌ์šฉ)
206 Partial Content ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฒ”์œ„(Range) ํ—ค๋”๋ฅผ ๋ณด๋‚ธ ๊ฒฝ์šฐ, ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€๋ถ„๋งŒ ์ „์†กํ•จ

 

3) ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ 

  • ์š”์ฒญ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ถ”๊ฐ€ ์ž‘์—…(์ฃผ๋กœ ๊ฒฝ๋กœ ์ด๋™)์ด ํ•„์š”ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์ƒํƒœ ์ฝ”๋“œ ๋ช…์นญ ์„ค๋ช…
301 Moved Permanently ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ. ์ƒˆ๋กœ์šด URI๊ฐ€ ์‘๋‹ต์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ
302 Found ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ. ํ–ฅํ›„ ์š”์ฒญ์€ ์›๋ž˜ URI๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
304 Not Modified (์ค‘์š”) ์บ์‹œ ๋ชฉ์ . ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์œผ๋‹ˆ ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ๋จ
307 Temporary Redirect ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅธ URI์— ์žˆ์œผ๋ฉฐ, ์ด์ „ ์š”์ฒญ๊ณผ ๋™์ผํ•œ Method(GET/POST ๋“ฑ)๋กœ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•จ
308 Permanent Redirect ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋‹ค๋ฅธ URI์— ์žˆ์œผ๋ฉฐ, ์ด์ „ ์š”์ฒญ๊ณผ ๋™์ผํ•œ Method๋กœ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•จ

 

4) ํด๋ผ์ด์–ธํŠธ ์—๋Ÿฌ 

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์ƒํƒœ ์ฝ”๋“œ ๋ช…์นญ ์„ค๋ช…
400 Bad Request ์ž˜๋ชป๋œ ๋ฌธ๋ฒ• ๋“ฑ์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ
401 Unauthorized (JWT ํ•ต์‹ฌ) ๋น„์ธ์ฆ ์ƒํƒœ. ์š”์ฒญ์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์Šค์Šค๋กœ๋ฅผ ์ธ์ฆ(๋กœ๊ทธ์ธ ๋“ฑ)ํ•ด์•ผ ํ•จ
403 Forbidden ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฝ˜ํ…์ธ ์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์—†์Œ (401๊ณผ ๋‹ฌ๋ฆฌ ์„œ๋ฒ„๋Š” ๋ˆ„๊ตฐ์ง€ ์•Œ์ง€๋งŒ ๊ฑฐ์ ˆํ•จ)
404 Not Found ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ. ๊ฒฝ๋กœ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ํ”ํžˆ ๋ฐœ์ƒํ•จ
405 Method Not Allowed ์š”์ฒญํ•œ ๋ฉ”์†Œ๋“œ(GET, POST ๋“ฑ)๋Š” ์•Œ์ง€๋งŒ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
409 Conflict ์š”์ฒญ์ด ์„œ๋ฒ„์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ์ถฉ๋Œํ•จ (์˜ˆ: ์ค‘๋ณต๋œ ์•„์ด๋”” ๊ฐ€์ž… ์‹œ๋„)
429 Too Many Requests ์‚ฌ์šฉ์ž๊ฐ€ ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋ƒ„ (Rate Limiting)

 

5) ์„œ๋ฒ„ ์—๋Ÿฌ 

  • ์„œ๋ฒ„๊ฐ€ ์œ ํšจํ•œ ์š”์ฒญ์„ ๋ช…๋ฐฑํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์ƒํƒœ ์ฝ”๋“œ ๋ช…์นญ ์„ค๋ช…
500 Internal Server Error ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ
502 Bad Gateway ๊ฒŒ์ดํŠธ์›จ์ด๋‚˜ ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์ƒ์œ„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž˜๋ชป๋œ ์‘๋‹ต์„ ๋ฐ›์Œ
503 Service Unavailable ์„œ๋ฒ„๊ฐ€ ์ผ์‹œ์ ์ธ ๊ณผ๋ถ€ํ•˜๋‚˜ ์œ ์ง€๋ณด์ˆ˜๋กœ ์ธํ•ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ์•ˆ ๋จ
504 Gateway Timeout ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ƒ์œ„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ œ์‹œ๊ฐ„์— ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•จ

 

 

HTTP ๋กœ ์ œ์–ดํ•˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋“ค 

1)  HTTP ์ฟ ํ‚ค 

  • ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „์†กํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ 
    1. ์„œ๋ฒ„์˜ ์‘๋‹ต : ์„œ๋ฒ„ ์‘๋‹ต์‹œ, ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‘๋‹ต ํ—ค๋”์— Set-Cookie ๋ผ๋Š” ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์„œ ๋ณด๋ƒ„
      (์˜ˆ์‹œ: Set-Cookie: user_id=eunsil; Max-Age=3600; Path=/)
    2. ๋ธŒ๋ผ์šฐ์ €์˜ ์ €์žฅ : ์‘๋‹ต์„ ๋ฐ›์€ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ—ค๋”๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ž์‹ ์˜ ์ฟ ํ‚ค ์ €์žฅ์†Œ์— ๋ณด๊ด€
    3. ์ดํ›„์˜ ์š”์ฒญ : ์ด์ œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋™์ผํ•œ ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค, ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ(Request) ํ—ค๋”์˜ Cookie ํ•„๋“œ์— ์ž๋™์œผ๋กœ ๋‹ด์•„์„œ ์ „์†ก
  • ์ฟ ํ‚ค ์‚ฌ์šฉ ๋ชฉ์  3๊ฐ€์ง€ 
    • ์ฒซ๋ฒˆ์งธ, ์„ธ์…˜ ๊ด€๋ฆฌ(Session management) : ์„œ๋ฒ„์— ์ €์žฅํ•ด์•ผ ํ•  ๋กœ๊ทธ์ธ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๊ฒŒ์ž„ ์Šค์ฝ”์–ด ๋“ฑ์˜ ์ •๋ณด ๊ด€๋ฆฌ 
    • ๋‘๋ฒˆ์งธ, ๊ฐœ์ธํ™”(Personalization) : ์‚ฌ์šฉ์ž ์„ ํ˜ธ, ํ…Œ๋งˆ ๋“ฑ์˜ ์„ธํŒ… 
    • ์„ธ๋ฒˆ์งธ, ํŠธ๋ ˆํ‚น(Tracking) : ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์„ ๊ธฐ๋กํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์šฉ๋„ 
  • ์ด๋ฅผ ํ†ตํ•ด ์ƒํƒœ๊ฐ€ ์—†๋Š” http ํ”„๋กœํ† ์ฝœ ํ™˜๊ฒฝ์—์„œ๋„ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž ์‹๋ณ„,  ๊ฐ€๋Šฅํ•ด์ง. 

 

 

2) HTTP ์บ์‹ฑ 

  • ์ด์ „์— ๊ฐ€์ ธ์˜จ ๋ฆฌ์†Œ์Šค๋“ค์„ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•. 
  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฆฌ์†Œ์Šค์˜ ๋ณต์ž๋ณธ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ์š”์ฒญ ์‹œ์— ๊ทธ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋ ˆ์ดํ„ด์‹œ์™€ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์—ฌ์คŒ์œผ๋กœ์จ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ค„์—ฌ์คŒ  
    • ์ €์žฅ ์œ„์น˜ 
      • ๊ฐœ์ธ ์บ์‹œ private cache : ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์•ฑ ๋‚ด๋ถ€ ์ €์žฅ์†Œ(disk/memory) ์— ์ €์žฅ. ์˜ค์ง ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์บ์‹œ
      • ๊ณต์œ  ์บ์‹œ shared cache : ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ”„๋ก์‹œ ์„œ๋ฒ„๋‚˜ CDN(content delivery network) ์— ์ €์žฅ. ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋™์ผํ•˜๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ €์žฅํ•ด์„œ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ž„. 
    • ๋ฌด์—‡์„ ์ €์žฅํ•˜๋Š”๊ฐ€ 
      • ๋ฆฌ์†Œ์Šค ์ž์ฒด : HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค, CSS ํŒŒ์ผ, js ํŒŒ์ผ ๋“ฑ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ถˆ๋Ÿฌ์˜จ ํ•˜์œ„ ๋ฌธ์„œ๋“ค
      • ์‘๋‹ต ํ—ค๋” : ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์–ธ์ œ ์ƒ์„ฑ๋๋Š”์ง€, ์–ธ์ œ๊นŒ์ง€ ์œ ํšจํ•œ์ง€(๋งŒ๋ฃŒ์ผ), ๊ณ ์œ  ์‹๋ณ„์ž(ETag) ๋Š” ๋ฌด์—‡์ธ์ง€ ๋“ฑ 
    • ์–ด๋–ป๊ฒŒ ์ œ์–ดํ•˜๋Š”๊ฐ€ 
      • cache-control : ์บ์‹ฑ ํ•ด์•ผํ•˜๋Š” ๋Œ€์ƒ, ์œ ํšจ ๊ธฐ๊ฐ„ ์„ค์ • ๋“ฑ
      • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(valdation) : ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ž˜๋์„๋•Œ ์„œ๋ฒ„์—๊ฒŒ ์œ ํšจ ์—ฌ๋ถ€ ๋ฌผ์Œ. 304 not modified ์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ ์ „์†ก ์—†์ด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•จ. 

 

 

3) Origin ์ œ์•ฝ ์™„ํ™” (CORS) 

  • ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(SOP) ์„ ๋”ฐ๋ฅธ๋‹ค. 
  • Origin(์ถœ์ฒ˜): ํ”„๋กœํ† ์ฝœ(http/https) + ๋„๋ฉ”์ธ(eunsil.com) + ํฌํŠธ(8080)๊ฐ€ ๋ชจ๋‘ ๊ฐ™์•„์•ผ ๋™์ผ ์ถœ์ฒ˜๋ผ๊ณ  ๋ด„ 
  • ์ฆ‰, ์ž์‹ ์ด ์ฒ˜์Œ ๋กœ๋“œ๋œ ๋„๋ฉ”์ธ๊ณผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์œผ๋กœ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์—†๊ฒŒ ์ œํ•œ๋จ. 
  • ์™œ๋ƒ๋ฉด, ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋ฌด ์‚ฌ์ดํŠธ์—๋‚˜ ์š”์ฒญ ๋ณด๋‚ด๋Š”๊ฑธ ํ—ˆ์šฉํ•˜๋ฉด, ํ•ด์ปค๊ฐ€ ๋งŒ๋“  ์‚ฌ์ดํŠธ์˜ js ๊ฐ€ ๋‚ด ์ •๋ณด ๋นผ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ๋จ. 
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ณดํ†ต 
    • (ํ”„๋ก ํŠธ๊ฐœ๋ฐœ์„œ๋ฒ„) react, vue ๋“ฑ์€ 3000๋ฒˆ ํฌํŠธ, (๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ์„œ๋ฒ„) spring boot, node.js ๋“ฑ์€ 8000๋ฒˆ ํฌํŠธ ์ธ๊ฒฝ์šฐ 
    • ์ •์  ํŒŒ์ผ์„ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด s3 ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 
    • AWS EC2 ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ์‚ฌ์šฉ 
    • ์„œ๋ธŒ ๋„๋ฉ”์ธ ๋“ฑ๋“ฑ 
    • ํ˜„์‹ค์ ์ธ ์ด์œ ๋กœ ์ฃผ์†Œ๋Š” ๋‹ค๋ฅด์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋Š” ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•จ ! 
  • CORS (Cross-Origin Resource Sharing): HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ด ์ œ์•ฝ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์™„ํ™”ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ 
  • ์ž‘๋™ ๋ฐฉ์‹: ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ํ—ค๋”์— Access-Control-Allow-Origin์„ ์‹ค์–ด ๋ณด๋‚ด๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•จ. 

 

4) ์ปค๋„ฅ์…˜ ๊ด€๋ฆฌ์™€ ์ง„ํ™” 

  • http ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ TCP ์—ฐ๊ฒฐ์ด ๋จผ์ € ์„ค์ •๋˜์–ด์•ผ ํ•จ. (๋„คํŠธ์›Œํฌ 4๊ณ„์ธต ์ฐธ๊ณ ) 
  • ์›น์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ๋”์šฑ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด ๊ณ ์•ˆ๋˜์–ด์˜ด. 
  • "์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์—ฐ๊ฒฐ์„ ๋งบ๊ณ  ๋Š๋Š” ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ณ  ํ•œ ๋ฒˆ์— ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๊ฒƒ์ธ๊ฐ€?" ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ์ง„ํ™”ํ•จ. 
๋‹จ๊ณ„ ์ฃผ์š” ํŠน์ง• ์„ค๋ช…
HTTP/1.0 ๋‹จ๊ธฐ ์ปค๋„ฅ์…˜ ์š”์ฒญ/์‘๋‹ต ํ•˜๋‚˜๋‹น ๋งค๋ฒˆ ์ƒˆ๋กœ์šด TCP ์—ฐ๊ฒฐ์„ ๋งบ๊ณ  ๋Š์Œ (๋งค์šฐ ๋น„ํšจ์œจ์ ).
HTTP/1.1 ์ง€์† ์ปค๋„ฅ์…˜ Connection: keep-alive ํ—ค๋”๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜ ์—ฐ๊ฒฐ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์—ฐ์†ํ•ด์„œ ์ฒ˜๋ฆฌ.
HTTP/2 ๋‹ค์ค‘ํ™” (Multiplexing) ๋‹จ์ผ ์—ฐ๊ฒฐ ์ƒ์—์„œ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋™์‹œ์— ์ „์†กํ•˜์—ฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ž„.
HTTP/3 QUIC (UDP ๊ธฐ๋ฐ˜) TCP ๋Œ€์‹  UDP ๊ธฐ๋ฐ˜์˜ QUIC ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ์—ฐ๊ฒฐ ์ œ๊ณต.

 

- http 1.1 ๋ถ€ํ„ฐ ์ง€์† ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•ด์ง. ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋กœ ์—ฌ๋Ÿฌ ์—ฐ์† ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๋ฉด์„œ, ์ด๋ฏธ์ง€ ์ˆ˜์‹ญ๊ฐœ ๋“ค์–ด์žˆ๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ ๊ฐ€๋Šฅํ•ด์ง. 

- http 2๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๊ฐ€ ์บก์Аํ™”๋ผ์„œ ์ธ๊ฐ„์ด ์ฝ๊ธฐ ์–ด๋ ค์šด frame ๊ตฌ์กฐ๋กœ ์ „์†ก. 

- ok http  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋Ÿฐ ์ปค๋„ฅ์…˜ ํ’€๋ง, http2, http3 ์ž๋™ ์ง€์›ํ•จ. 

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[260121] PostgreSQL ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ข…๋ฅ˜  (0) 2026.01.21
[260115] REST API ์™€ ๋ฌด์ƒํƒœ์„ฑ(state less)  (0) 2026.01.15
[260113] ํŠธ๋žœ์ ์…˜์ด๋ž€? (Transaction)  (0) 2026.01.13
๋ฒ„์ „ ๊ด€๋ฆฌ๋ž€? Git ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ, Git๊ณผ GitHub ์ฐจ์ด  (0) 2025.11.16
'ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [260121] PostgreSQL ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ข…๋ฅ˜
  • [260115] REST API ์™€ ๋ฌด์ƒํƒœ์„ฑ(state less)
  • [260113] ํŠธ๋žœ์ ์…˜์ด๋ž€? (Transaction)
  • ๋ฒ„์ „ ๊ด€๋ฆฌ๋ž€? Git ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ, Git๊ณผ GitHub ์ฐจ์ด
jennnnna
jennnnna
  • jennnnna
    ๐Ÿ’ป๐Ÿ€Jennna's BLOG
    jennnnna
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (74) N
      • ์ปดํ“จํ„ฐ (1)
        • Operating system ์šด์˜์ฒด์ œ (8)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ (5)
        • JAVA (6)
        • PHP (1)
        • Android (7)
        • Apache (1)
        • Python (0)
      • ๊ณต๋ถ€ (15)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๊ณต๋ถ€๊ธฐ๋ก (12)
        • TIL (3)
      • AI (2) N
      • TTS (1)
      • LLM (2)
      • RAG (1)
      • ์–ดํ•™ (5)
        • English (5)
        • Japanese (ๆ—ฅๆœฌ่ชž) (0)
      • ๊ธ€์“ฐ๊ธฐ (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ž๋ฐ”๋…ํ•™
    cs๊ณต๋ถ€
    ์šด์˜์ฒด์ œ
    CS์ง€์‹
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌํ•„๊ธฐ
    ์ •์ฒ˜๊ธฐ
    ์นดํŽ˜์•Œ๋ฐ”
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ์˜ค๋ธ”์™„
    ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐœ๋ฐœ
    ์šด์˜์ฒด์ œ๊ณต๋ถ€
    ๋ฌต์€์ง€์ฐธ์น˜๊น€๋ฐฅ
    ์ž๋ฐ”๊ธฐ์ดˆ
    ๋น„์ „๊ณต์ž๊ฐœ๋ฐœ์ž
    ๋น„์ „๊ณต์žcs๊ณต๋ถ€
    ์•ˆ๋“œ๋กœ์ด๋“œ
    ์ž๋ฐ”๊ณต๋ถ€
    ์ž๋ฐ”๊ณต์‹๋ฌธ์„œ
    ์žฅ์ธํ•œ๊ณผ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
jennnnna
[260115] HTTP ๋ž€ (http ์ธ์ฆ, http ์‘๋‹ต ์ฝ”๋“œ ๋“ฑ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”