HTTP (Hyper Text Transfer Protocol) λ?
μΉμ μλ²-ν΄λΌμ΄μΈνΈ λͺ¨λΈμ λ°λ₯Έλ€. ν΄λΌμ΄μΈνΈλ μμ²νκ³ μλ²λ μλ΅νλ€.
HTTP λ μΈν°λ·μμ μ΄ μλ²-ν΄λΌμ΄μΈνΈ ꡬ쑰μμ λ°μ΄ν°λ₯Ό κ΅νν λ μ¬μ©νλ νλ‘ν μ½μ΄λ€.
* νλ‘ν μ½μ΄λ, λ°μ΄ν°λ₯Ό μ΄λ€ νμμΌλ‘ ꡬμ±νλμ§λ₯Ό μ μν κ²...
λ°μ΄ν°λ ν μ€νΈ, μ΄λ―Έμ§, λμμλΆν° μ¬μ©μκ° μμ±ν μΉνμ΄μ§ λ¬ΈμκΉμ§ μ λΆκ° λ μ μλ€.
μλ²-ν΄λΌμ΄μΈνΈ λͺ¨λΈμ λ°μ΄ν°λ₯Ό μμ²(request) νκ³ μλ΅(response) νλ―λ‘, HTTP λ μ΄ μμ²κ³Ό μλ΅ λ©μμ§λ₯Ό μ΄λ»κ² ꡬμ±νκ³ ν΄μνλμ§ μ μν΄λ¨λ€.
μμ²/μλ΅ λ©μμ§λ μλμκ² μ΄λ€ λ°μ΄ν°λ₯Ό μμ²/μλ΅ν μ§ λ±μ λν μ 보μ΄λ€.
μ΄λ μμ²νκ³ μλ΅νλ μΉ μ½ν μΈ λ°μ΄ν°λ₯Ό 리μμ€λΌκ³ νλ€.
HTTP Request λ©μμ§ ν¬λ§·
1) request line : HTTP μμ² λ©μμ§μ μμμ€. μλ²μ λμλ°©μ, μμ² νμΌ, νλ‘ν μ½ λ²μ μ λͺ μν¨.
- HTTP λ©μλ : μλ²κ° μνν΄μΌν λμ. λνμ μΌλ‘ GETμ 리μμ€λ₯Ό ν΄λΌμ΄μΈνΈλ‘ κ°μ Έλ€λ¬λΌλ μλ―Έ.
- μμ² νμΌ : μμ²ν μλ². μ£Όλ‘ URL, λλ νλ‘ν μ½, ν¬νΈ, λλ©μΈμ μ λ κ²½λ‘(/background.png) λ±.
- HTTP λ²μ : λ²μ λ§λ€ λ©μμ§ κ΅¬μ‘°κ° λ€λ₯΄λ―λ‘ λͺ μ.
2) request headers : HTTP μμ²μ λν λ©νμ 보
3) request body : μμ²κ³Ό ν¨κ» λ³΄λΌ λ°μ΄ν°. μλ²μμ μ΄ λ°μ΄ν°λ₯Ό μ΄μ©ν μ μλ€.
HTTP Response λ©μμ§ ν¬λ§·
1) response line( = status line) : μλ΅μ 첫째 μ€. νλ‘ν μ½ λ²μ κ³Ό μμ²μ μνλ₯Ό λͺ μ.
- νλ‘ν μ½ λ²μ : λ³΄ν΅ HTTP/1.1
- μν μ½λ : μμ²μ μ±κ³΅ μ¬λΆ. 200μ μ±κ³΅, 404λ μλ¬ λ±.
- μν ν μ€νΈ : μνμ½λμ μ€λͺ μ μ§§κ³ κ°κ²°νκ² λνλ.
2) response headers : μλ΅μ λ©νμ 보
3) response body : ν΄λΌμ΄μΈνΈμκ² μλ΅νκ³ μ νλ λ°μ΄ν°.
HTTP Method
μλ²κ° μ΄λ»κ² λμν μ§μ λν ν€μλ
- GET : μλ²κ° κ°μ§κ³ μλ λ°μ΄ν°λ₯Ό μμ²
- POST : λ°μ΄ν°λ₯Ό μλ²μ μ λ ₯
- PUT : μλ²μμ κ°μ§κ³ μλ λ°μ΄ν° μ 체λ₯Ό μ λ°μ΄νΈ. λͺ μνμ§ μμ νλλ μ λΆ null or μ΄κΈ°κ°μΌλ‘ μ²λ¦¬λ¨.
- PATCH : μλ²μμ κ°μ§κ³ μλ λ°μ΄ν° μΌλΆλ₯Ό μ λ°μ΄νΈ. μ΄λ€ νλλ₯Ό μ λ°μ΄νΈν μ§ μ λ³΄κ° νμ.
- DELETE : μλ²μμ κ°μ§κ³ μλ λ°μ΄ν°λ₯Ό μμ
- HEAD : ν€λ μ λ³΄λ§ μμ². ν΄λΉ 리μμ€κ° μ‘΄μ¬νλμ§ νΉμ μλ²μ λ¬Έμ μλμ§ λ±μ νμΈνκΈ° μν΄ μ¬μ©ν¨.
- OPTIONS : μΉμλ²κ° μ§μνλ λ©μλμ μ’ λ₯λ₯Ό μμ². ex) CORS μν©μμ λ€λ₯Έ λλ©μΈ μλ²μ OPTIONS μμ²μ λ λ € ν μ€νΈ...
- TRACE : ν΄λΌμ΄μΈνΈμ μμ²μ κ·Έλλ‘ λ°ν(echo). μλ² μν νμΈ μ©λλ‘ μ£Όλ‘ μ¬μ©λ¨.
HTTP Headers
곡ν΅(General) ν€λ - μμ²κ³Ό μλ΅μ λͺ¨λ μ¬μ©λλ ν€λ
- Date : HTTP λ©μμ§κ° λ§λ€μ΄μ§ λ μ§μ μκ°.
- Cache-Control : μΊμ±κ³Ό κ΄λ ¨λ μ 보. λ§€μ° μ€μ
- Connection : λ©μμ§ μ μ‘ ν μλ²μμ μ°κ²°μ μ΄λ»κ² ν μ§ μ μ΄. κ³μ μ°κ²°ν κ±°λΌλ©΄ keep-alive, λλλ€λ©΄ close. μ¬μ€μ μλ―Έκ° μμ΄ HTTP/2μμλ μ¬λΌμ§.
Entity ν€λ(=Content ν€λ)
μμ²κ³Ό μλ΅μ μ½ν μΈ (body) μ κ΄λ ¨λ μ 보
Content-Type, Content-Language, Content-Encoading λ±
μμ²(Request) ν€λ
μμ²μμ μ°μ΄λ ν€λ. λ©μμ§μ 컨ν μΈ (body) μλ κ΄λ ¨ μμ.
- Host : μλ² λλ©μΈ λ€μκ³Ό ν¬νΈ. λ°λμ νλκ° μ‘΄μ¬ν΄μΌ ν¨.
- User-Agent : μ¬μ©μκ° μ΄λ€ ν΄λΌμ΄μΈνΈλ₯Ό μ΄μ©ν΄μ μμ²μ 보λλμ§.(ex-μ΄μ체μ , λΈλΌμ°μ μ’ λ₯ λ±) μ΄λ₯Ό νμ©ν΄ μ μν΅κ³/λΈλΌμ°μ μλ³ν¨.
- Accept : μνλ μ½ν μΈ μ νμ (MIME) λͺ μ. μ΄ μΈμλ Accept-Charset, Accept-Language, Accept-Encoding λ μμ.
- Authorization : μΈμ¦ ν ν°(JWT, Bearer ν ν° λ±) μ μλ²λ‘ λ³΄λΌ λ μ¬μ©. λ¨Όμ ν ν° μ’ λ₯λ₯Ό λ¨Όμ λ°νκ³ μ€μ ν ν° λ¬Έμλ₯Ό 보λ.
- Origin : μμ²μ΄ μ΄λ μ£Όμμμ μμλλμ§ λνλ. μμ² λ³΄λΈ μ£Όμμ λ°λ μ£Όμκ° λ€λ₯΄λ©΄ CORS λ¬Έμ κ° λ°μνκΈ°λ ν¨.
- Referer : μ΄ νμ΄μ§ μ΄μ νμ΄μ§μ μ£Όμ. μ λ리ν±μ€κ°μ λ°μ λ§μ΄ μ¬μ©λ¨.
μλ΅(Response) ν€λ
μλ΅μμ μ°μ΄λ ν€λ. λ©μμ§μ 컨ν μΈ (body) μλ κ΄λ ¨ μμ.
- Access-Control-Allow-Origin : λ€λ₯Έ originμ μ κ·Όν μ μλ κΆνμ λΆμ¬νλλ‘ λΈλΌμ°μ μκ² μλ €μ£Όλ ν€λ μ 보. CORS μλ¬κ° λλ κ²½μ°, μ΄ ν€λμ μμ² λ³΄λ΄λ νλ‘ νΈ μ£Όμλ₯Ό λͺ μν΄μΌ μλ¬κ° λμ§ μμ. * λ‘ λͺ¨λ μ£Όμμ μ κ·Όμ νμ©ν μ μμ§λ§, κ·Έλ§νΌ 보μμ΄ μ·¨μ½ν΄μ§.
- Allow : μ§μνλ λ©μλ μ§ν©μ μλ¦Ό.
- Content-Disposition : μλ΅ body λ₯Ό λΈλΌμ°μ κ° μ΄λ»κ² νμν΄μΌ ν μ§ μλ €μ€. inline = μΉνμ΄μ§ νλ©΄μ νμ, attachment = λ€μ΄λ‘λ
- Location : 3xx , 201 created μλ΅μΈ κ²½μ° λ¦¬λ€μ΄λ νΈν νμ΄μ§ λͺ μ.
- Content-Security-Policy : λ€λ₯Έ μΈλΆ νμΌ(script, image λ±) λΆλ¬μ¬ λ μ°¨λ¨ν μμ€λ λΆλ¬μ¬ μμ€λ₯Ό λͺ μ. self = μμ μ λλ©μΈλ§, https: = httpsλ₯Ό ν΅ν΄μλ§, default-src = λͺ¨λ μΈλΆ μμ€ λ±λ± μ΅μ λ§μ.
μΏ ν€&μΊμ ν€λ
μΏ ν€μ μΊμ±μ λν μ€μ μ ν€λλ₯Ό ν΅ν΄ ν μ μμ.
μΊμ±μ λ³΄ν΅ GET μμ²μλ§ ν¨. κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λκ³ λκ³ μ°λ κ².
μΊμ ν€λ
Cache-Control. κ³΅ν΅ ν€λ.
- no-store = μ무 κ²λ μΊμ±νμ§ μκ² λ€.
- no-cache = λͺ¨λ μΊμλ₯Ό μ°κΈ° μ μ μλ²μ μ΄ μΊμ μ¨λ λλκ³ λ¬Όμ΄λ΄λΌ.
- must-revalidate = λ§λ£λ μΊμλ₯Ό μλ²μ νμΈλ°μ.
- public = 곡μ μΊμμ μ μ₯ν΄λ λλ€.
- private = λΈλΌμ°μ κ°μ νΉμ μ¬μ©μ νκ²½μλ§ μ μ₯ν΄λΌ
- max-age = μΊμ μ ν¨μκ°
Age
Expires
ETag
If-None-Match
μΏ ν€ ν€λ
Cookie
Cookie: ν€=κ°; ν€=κ°;
HTTP Status code
- 1xx : μ 보, μμ² λ°μκ³ νλ‘μΈμ€ κ³μνκ² λ€.
- 2xx : μ±κ³΅, μμ² μ±κ³΅μ μΌλ‘ λ°μλ€. (200 μ±κ³΅)
- 3xx : 리λ€μ΄λ μ , μμ² μλ£ μν΄ μΆκ° μμ μ΄ νμνλ€.
- 4xx : ν΄λΌμ΄μΈνΈ μ€λ₯, μμ²μ λ¬Έλ²μ΄ μλͺ»λκ±°λ μ²λ¦¬ν μ μλ€. (404 μμ²νλ 리μμ€κ° μλ²μ μμ)
- 5xx : μλ² μ€λ₯, μλ²κ° μ ν¨ν μμ²μ μλ΅μ μ€ν¨νλ€.