HTTP μμ² λ©μμ§
HTTP μμ² λ©μμ§λ?
λΈλΌμ°μ κ° μλ²μκ² νΉμ κ°μ²΄λ₯Ό μμ²νκΈ° μν΄ μ¬μ©νλ λ©μμ§
μνν λ°μ΄ν° μ‘μμ μ μν΄ μ½μλ ννλ₯Ό κ°μ§κ³ μμ
HTTP μμ² λ©μμ§μ νΉμ§
- λ©μμ§κ° μΌλ° ASCII κΈ°λ° ν μ€νΈλ‘ μ΄λ£¨μ΄μ§
- κ° μ€μ Carriage Return & Line Feedλ‘ κ΅¬λ³λ¨
- 첫μ€μ μμ²λΌμΈμ΄λΌκ³ λΆλ₯΄κ³ , μ΄ν μ€λ€μ ν€λλΌμΈμ΄λΌκ³ ν¨
- ν€λλΌμΈ μ΄νλ‘ Entity Bodyκ° μ‘΄μ¬νμ§λ§ GETμμλ λΉμ΄μμ
μμ²λΌμΈ
- Method, URL, HTTP λ²μ μ λνλ΄λ μΈκ°μ§ νλλ₯Ό κ°μ§
- Method : HTTP λ©μλκ° λ¬΄μμΈμ§ λνλ
- URL : κ°μ²΄μ μμΉλ₯Ό λνλ
- HTTP λ²μ : λΈλΌμ°μ μ HTTP λ²μ μ λνλ
ν€λλΌμΈ
- κ΅μ₯ν λ€μν Headerλ₯Ό λͺ μν μ μμ
HTTP μλ΅ λ©μμ§
HTTP μλ΅ λ©μμ§λ?
μλ²κ° λΈλΌμ°μ μ μμ²μ λν΄ μλ΅νκΈ° μν΄ μ¬μ©νλ λ©μμ§
μνν λ°μ΄ν° μ‘μμ μ μν΄ μ½μλ ννλ₯Ό κ°μ§κ³ μμ
HTTP μλ΅ λ©μμ§μ νΉμ§
- λ©μμ§κ° μΌλ° ASCII κΈ°λ° ν μ€νΈλ‘ μ΄λ£¨μ΄μ§
- κ° μ€μ Carriage Return & Line Feedλ‘ κ΅¬λ³λ¨
- μνλΌμΈ, ν€λλΌμΈ, Entity Bodyλ‘ μ΄λ£¨μ΄μ§
- Entity Bodyλ μμ²λ°μ κ°μ²΄λ₯Ό ν¬ν¨ν¨
μνλΌμΈ
- μνλΌμΈμ HTTP λ²μ , μνμ½λ, μν λ©μμ§λ₯Ό ν¬ν¨
- HTTP λ²μ μ μλ²μ HTTP λ²μ μ λνλ
- μνμ½λλ λ§ κ·Έλλ‘ μμ²μ λν κ²°κ³Όμ HTTP μν μ½λλ₯Ό λͺ μν¨ Ex) 404
- μν λ©μμ§λ μμ²μ λν κ²°κ³Όμ HTTP μν λ©μμ§λ₯Ό λͺ μν¨ Ex) ok
ν€λλΌμΈ
- κ΅μ₯ν λ€μν Headerλ₯Ό λͺ μν μ μμ
μΏ ν€
HTTP μλ²λ μνλ₯Ό μ μ§νμ§ μκΈ° λλ¬Έμ μ¬μ©μ μ μμ μ ννκ±°λ, νΉμ μ¬μ©μμκ² νΉμ 컨ν μΈ λ₯Ό μ 곡νκΈ° μν 맀κ°μ²΄κ° νμνκ² λμμ. μ΄λ μ¬μ©λλ κ²μ΄ μΏ ν€
μ°Έκ³ ) ν€λ μμ
κ³΅ν΅ ν€λ
Date : νμ¬μκ° (Sat, 23 Mat 2019 GMT)
Pragma : μΊμμ μ΄ (no-cache), HTTP/1.0μμ μ°λ κ²μΌλ‘ HTTP/1.1μμλ Cache-Controlμ΄ μ°μΈλ€.
Cache-Control : μΊμ μ μ΄
- no-store : μΊμλ₯Ό μ μ₯νμ§ μκ² λ€.
- no-cache : λͺ¨λ μΊμλ₯Ό μ°κΈ° μ μ μλ²μ ν΄λΉ μΊμλ₯Ό μ¬μ©ν΄λ λλμ§ νμΈνκ² λ€.
- must-revalidate : λ§λ£λ μΊμλ§ μλ²μ νμΈνκ² λ€.
- public : 곡μ μΊμμ μ μ₯ν΄λ λλ€.
- private : 'λΈλΌμ°μ ' κ°μ νΉμ μ¬μ©μ νκ²½μλ§ μ μ₯νκ² λ€.
- max-age : μΊμμ μ ν¨μκ°μ λͺ μνκ² λ€.
Transfer-Encoding : body λ΄μ© μ체 μμΆ λ°©μ μ§μ
- 'chunked'λ©΄ λ³Έλ¬Έμ λ΄μ©μ΄ λμ μΌλ‘ μμ±λμ΄ κΈΈμ΄λ₯Ό λͺ¨λ₯΄κΈ° λλ¬Έμ λλ μ 보λΈλ€λ μλ―Έλ€.
- λ³Έλ¬Έμ λ°μ΄ν° κΈΈμ΄κ° λμμ μΌκΈμΌκΈ λΈλΌμ°μ κ° ν΄μν΄μ νλ©΄μ λΏλ €μ€ λ μ΄ κΈ°λ₯μ μ¬μ©νλ€.
Upgrade : νλ‘ν μ½ λ³κ²½μ μ¬μ© ex) HTTP/2.0
Via : μ€κ³(νλ‘μ)μλ²μ μ΄λ¦, λ²μ , νΈμ€νΈλͺ
Content-Encoding : λ³Έλ¬Έμ 리μμ€ μμΆ λ°©μ (transfer-encodingμ body μ체μ΄λ―λ‘ λ€λ¦)
Content-type : λ³Έλ¬Έμ λ―Έλμ΄ νμ
Content-Length : λ³Έλ¬Έμ κΈΈμ΄
Content-language : λ³Έλ¬Έμ μ΄ν΄νλλ° κ°μ₯ μ μ ν μΈμ΄
Expires : μμμ λ§λ£ μΌμ
Allow : μ¬μ©μ΄ κ°λ₯ν HTTP λ©μλ λ°©μ
Last-Modified : μ΅κ·Όμ μμ λ λ μ§
ETag : μΊμ μ λ°μ΄νΈ μ 보λ₯Ό μν μμμ μλ³ μ«μ
Connection : ν΄λΌμ΄μΈνΈμ μλ²μ μ°κ²° λ°©μ μ€μ HTTP/1.1μ kepp-alive λ‘ μ°κ²° μ μ§νλκ² λν΄νΈ.
μμ² ν€λ
Host : μμ²νλ €λ μλ² νΈμ€νΈ μ΄λ¦κ³Ό ν¬νΈλ²νΈ
User-agent : ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ μ 보 ex) Mozilla/4.0, Windows NT5.1
Referer : λ°λ‘ μ§μ μ λ¨Έλ¬Όλ λ μΉ λ§ν¬ μ£Όμ(ν΄λΉ μμ²μ ν μ μκ²λ νμ΄μ§)
Accept : ν΄λΌμ΄μΈνΈκ° μ²λ¦¬ κ°λ₯ν λ―Έλμ΄ νμ μ’ λ₯ λμ΄ ex) */* - λͺ¨λ νμ μ²λ¦¬ κ°λ₯
Accept-charset : ν΄λΌμ΄μΈνΈκ° μ§μκ°λ₯ν λ¬Έμμ΄ μΈμ½λ© λ°©μ
Accept-language : ν΄λΌμ΄μΈνΈκ° μ§μ κ°λ₯ν μΈμ΄ λμ΄
Accept-encoding : ν΄λΌμ΄μΈνΈκ° ν΄μ κ°λ₯ν μμΆ λ°©μ μ§μ ex) gzip, deflate
Content-location : ν΄λΉ κ°μ²΄μ μ€μ μμΉ
Content-disposition : μλ΅ λ©μΈμ§λ₯Ό λΈλΌμ°μ κ° μ΄λ»κ² μ²λ¦¬ν μ§ μλ €μ€
Content-Security-Policy : λ€λ₯Έ μΈλΆ νμΌμ λΆλ¬μ€λ κ²½μ° μ°¨λ¨ν 리μμ€μ λΆλ¬μ¬ 리μμ€ λͺ μ
- default-src https -> httpsλ‘λ§ νμΌμ κ°μ Έμ΄
- default-src 'self' -> μκΈ° λλ©μΈμμλ§ κ°μ Έμ΄
- default-src 'none' -> μΈλΆνμΌμ κ°μ Έμ¬ μ μμ
If-Modified-Since : μ¬κΈ°μ μ°μ¬μ§ μκ° μ΄νλ‘ λ³κ²½λ 리μμ€ μ·¨λ. νμ΄μ§κ° μμ λμμΌλ©΄ μ΅μ νμ΄μ§λ‘ κ΅μ²΄νκΈ° μν΄ μ¬μ©λλ€.
Authorization : μΈμ¦ ν ν°μ μλ²λ‘ λ³΄λΌ λ μ°μ΄λ ν€λ
Origin : μλ²λ‘ Post μμ²μ λ³΄λΌ λ μμ²μ΄ μ΄λ μ£Όμμμ μμλμλμ§ λνλ΄λ κ°
- μ΄ κ°μΌλ‘ μμ²μ λ³΄λΈ μ£Όμμ λ°λ μ£Όμκ° λ€λ₯΄λ©΄ CORS μλ¬κ° λλ€.
Cookie : μΏ κΈ° κ° key-valueλ‘ ννλλ€.
μλ΅ ν€λ
Location : 301, 302 μνμ½λμΌ λλ§ λ³Ό μ μλ ν€λλ‘ μλ²μ μλ΅μ΄ λ€λ₯Έ κ³³μ μλ€κ³ μλ €μ£Όλ©΄μ ν΄λΉ μμΉ(URI)λ₯Ό μ§μ νλ€.
Server : μΉμλ²μ μ’ λ₯ ex) nginx
Age : max-age μκ°λ΄μμ μΌλ§λ νλ λμ§ μ΄ λ¨μλ‘ μλ €μ£Όλ κ°
Referrer-policy : μλ² referrer μ μ± μ μλ €μ£Όλ κ° ex) origin, no-referrer, unsafe-url
WWW-Authenticate : μ¬μ©μ μΈμ¦μ΄ νμν μμμ μꡬν μ, μλ²κ° μ 곡νλ μΈμ¦ λ°©μ
Proxy-Authenticate : μμ²ν μλ²κ° νλ‘μ μλ²μΈ κ²½μ° μ μ μΈμ¦μ μν κ°
Reference
https://jeong-pro.tistory.com/181