yeon's blog

[HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹] HTTP ๊ธฐ๋ณธ - HTTP ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ

HTTP

[HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹] HTTP ๊ธฐ๋ณธ - HTTP ๋ฉ”์‹œ์ง€

yeonii 2023. 12. 3. 14:11

๐ŸŒฑ HTTP ๋ฉ”์‹œ์ง€

HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

 

HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€

GET /search?name=minsu&lan=ko HTTP/1.1 -> ์‹œ์ž‘ ๋ผ์ธ
Host: http://www.google.com -> ํ—ค๋”
    -> ๊ณต๋ฐฑ ๋ผ์ธ

 

  • method: GET, POST, PUT, DELETE ๋“ฑ ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘ ์ง€์ •
    • GET: ์„œ๋ฒ„์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์กฐํšŒ
    • POST: ์„œ๋ฒ„๊ฐ€ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ๋‚ด์—ญ ์ฒ˜๋ฆฌ
  • request-target
    • ๋ณดํ†ต ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ‘/’๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ํ•ฉ์นจ
    • *http://...?x=y ๊ฐ™์ด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฒฝ๋กœ์ง€์ • ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ
  • HTTP-version

 

HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€

HTTP/1.1 200 OK -> ์‹œ์ž‘ ๋ผ์ธ
Content-Type: text/html;charset=UTF-8
Content-Length: 3423 -> ํ—ค๋”
          -> ๊ณต๋ฐฑ ๋ผ์ธ
<html>
         <body>...</body>
</html> -> ๋ฉ”์‹œ์ง€ ๋ฐ”๋””

 

  • HTTP-version
  • status-code (HTTP ์ƒํƒœ ์ฝ”๋“œ): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ์‹คํŒจํ–ˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ
    • 200: ์„ฑ๊ณต
    • 400: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜
    • 500: ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜
  • reason-phrase (์ด์œ  ๋ฌธ๊ตฌ): ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์งง์€ ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธ€

 

HTTP ํ—ค๋”

HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด ํฌํ•จ

์˜ˆ) ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” ๋‚ด์šฉ, ๋ฐ”๋”” ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ, ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ์ •๋ณด, ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด, ์บ์‹œ ๊ด€๋ฆฌ ์ •๋ณด ๋“ฑ

 

→ header-field = field-name ":" OWS field-value OWS (OWS:๋„์–ด์“ฐ๊ธฐ ํ—ˆ์šฉ)

→ field-name์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„X, field-value๋Š” ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„O

 

HTTP ๋ฐ”๋””

์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ ํฌํ•จ

์˜ˆ) HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ byte๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ