HTTP

μ •ν˜œμΈΒ·2024λ…„ 8μ›” 8일

κΈ°μ΄ˆκ³΅λΆ€

λͺ©λ‘ 보기
14/18

πŸ’¨ HTTP

β­• HTTP(Hypertext Transfer Protocol)

πŸ’‘ μ›Ήμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ 톡신을 κ΄€λ¦¬ν•˜λŠ” ν”„λ‘œν† μ½œ

❗ ν΄λΌμ΄μ–ΈνŠΈ(일반적으둜 μ›Ή λΈŒλΌμš°μ €)λŠ” μ„œλ²„μ— μš”μ²­(Request)을 보내고, μ„œλ²„λŠ” μš”μ²­μ— λŒ€ν•œ 응닡(Response)을 λ°˜ν™˜

πŸ’¨ HTTP Request

β­• HTTP Request

πŸ’‘ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— νŠΉμ • μž‘μ—…μ„ μš”μ²­ν•˜λŠ” λ©”μ‹œμ§€

β­• ꡬ성 μš”μ†Œ

πŸ”Έ 1. Request Line

➑️ λ©”μ„œλ“œ (Method) + URL(Uniform Resource Locator) + HTTP 버전 으둜 ꡬ성

// μ˜ˆμ‹œ
GET /index.html HTTP/1.1
  • 1) λ©”μ„œλ“œ (Method) : μš”μ²­μ˜ μ’…λ₯˜λ₯Ό μ§€μ •
    • GET: μ„œλ²„μ—μ„œ 데이터λ₯Ό μš”μ²­
    • POST: μ„œλ²„μ— 데이터λ₯Ό 제좜
    • PUT: μ„œλ²„μ— 데이터λ₯Ό μ—…λ°μ΄νŠΈ
    • DELETE: μ„œλ²„μ—μ„œ 데이터λ₯Ό μ‚­μ œ
    • 기타: HEAD, OPTIONS, PATCH λ“±
  • 2) URL (Uniform Resource Locator) : μš”μ²­ν•  μžμ›μ˜ 경둜
  • 3) HTTP 버전 : μ‚¬μš©λ˜λŠ” HTTP ν”„λ‘œν† μ½œμ˜ 버전 ex. HTTP/1.1

πŸ”Έ2. 헀더 (Headers)

➑️ μš”μ²­μ— λŒ€ν•œ λΆ€κ°€ 정보λ₯Ό 포함

❗ 각 ν—€λ”λŠ” 이름과 κ°’μœΌλ‘œ ꡬ성

ex. Host, User-Agent, Accept, Content-Type, Authorization.

// μ˜ˆμ‹œ
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3

πŸ”Έ3. λ³Έλ¬Έ (Body):

➑️ μš”μ²­κ³Ό ν•¨κ»˜ 전솑할 데이터가 포함

❗ 주둜 POSTλ‚˜ PUT μš”μ²­μ—μ„œ μ‚¬μš©
ex. 양식 데이터, JSON 데이터

// μ˜ˆμ‹œ
{
  "username": "example",
  "password": "password123"
}

πŸ’¨ HTTP Response

β­• HTTP Response

πŸ’‘ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— λŒ€ν•΄ λ°˜ν™˜ν•˜λŠ” λ©”μ‹œμ§€

β­• ꡬ성 μš”μ†Œ

πŸ”Έ 1. Status Line

➑️ HTTP 버전 + μƒνƒœ μ½”λ“œ (Status Code) + μƒνƒœ λ©”μ‹œμ§€ (Status Message) 둜 ꡬ성

// μ˜ˆμ‹œ
HTTP/1.1 200 OK
  • 1) HTTP 버전 : μ‚¬μš©λ˜λŠ” HTTP ν”„λ‘œν† μ½œμ˜ 버전 ex. HTTP/1.1
  • 2) μƒνƒœ μ½”λ“œ (Status Code) : μš”μ²­μ— λŒ€ν•œ κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 3자리 숫자
    • 200 OK: μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ 처리됨.
    • 404 Not Found: μš”μ²­ν•œ μžμ›μ„ 찾을 수 μ—†μŒ.
    • 500 Internal Server Error: μ„œλ²„ λ‚΄λΆ€ 였λ₯˜.
    • 기타: 201 Created, 204 No Content, 301 Moved Permanently, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 502 Bad Gateway.
  • 3) μƒνƒœ λ©”μ‹œμ§€ (Status Message) : μƒνƒœ μ½”λ“œλ₯Ό μ„€λͺ…ν•˜λŠ” ν…μŠ€νŠΈ

πŸ”Έ2. 헀더 (Headers)

➑️ μš”μ²­μ— λŒ€ν•œ λΆ€κ°€ 정보λ₯Ό 포함

❗ 각 ν—€λ”λŠ” 이름과 κ°’μœΌλ‘œ ꡬ성

ex. Content-Type, Content-Length, Set-Cookie, Cache-Control

// μ˜ˆμ‹œ
Content-Type: text/html; charset=UTF-8
Content-Length: 138

πŸ”Έ3. λ³Έλ¬Έ (Body):

➑️ 응닡 데이터가 포함

❗ HTML λ¬Έμ„œ, JSON 데이터, 이미지, λΉ„λ””μ˜€ λ“± λ‹€μ–‘ν•œ ν˜•μ‹μ˜ 데이터가 포함될 수 있음

// μ˜ˆμ‹œ
<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello, world!</h1>
</body>
</html>

0개의 λŒ“κΈ€