03.Header
HTTP Header
HTTP ν΄λ (μΌλ° ν€λ)
HTTP ν€λ
header-field
field-name: field-value
HTTP μ μ‘μ νμν λͺ¨λ λΆκ°μ 보
ex) Mesasage body λ΄μ©/ν¬κΈ°, μμΆ, μΈμ¦, μλ² μ 보 λ±..
νν
ννμ μμ²μ΄λ μλ΅μμ μ λ¬ν μ€μ λ°μ΄ν°
νν ν€λλ νν λ°μ΄ν°λ₯Ό ν΄μν μ μλ μ 보 μ 곡
νν ν€λ
Content-Type
: νν λ°μ΄ν°μ νμtext/html; charset=utf-8
application/json
image/png
Content-Encoding
: νν λ°μ΄ν°μ μμΆ λ°©μgzip
deflate
identity
Content-Language
: νν λ°μ΄ν°μ μμ° μΈμ΄ko
en
en-US
Content-Length
: νν λ°μ΄ν°μ κΈΈμ΄(Byte)
Content negotiation
Clientκ° μ νΈνλ νν μμ² (μμ²μμλ§ μ¬μ©)
Accept : Clientκ° μ νΈνλ λ―Έλμ΄ νμ μ λ¬
Accept: text/*, text/plain, text/plain;format=flowed, */*
Accept-Charset : Clientκ° μ νΈνλ λ¬Έμ μΈμ½λ©
Accept-Encoding : Clientκ° μ νΈνλ μμΆ μΈμ½λ©
Accept-Language : Clientκ° μ νΈνλ μμ° μΈμ΄
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
μ μ‘ λ°©μ
λ¨μ μ μ‘
Content-Length: 3423
μμΆ μ μ‘
Content-Encoding: gzip
λΆν μ μ‘
Transfer-Encoding: chunked
λ²μ μ μ‘
Content-Range: bytes 1001-2000 / 2000
μΌλ° μ 보
Form
User agent email μ 보 (μμ²)
Referer
μ΄μ μΉ νμ΄μ§ μ£Όμ (μμ²)
User-Agent
User-Agent Application μ 보 (μμ²)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Server
μμ²μ μ²λ¦¬νλ ORIGIN μλ²μ μννΈμ¨μ΄ μ 보 (μλ΅)
Apache/2.2.22
Date
λ©μμ§κ° λ°μν λ μ§μ μκ° (μλ΅)
νΉλ³ν μ 보
Host
μμ²ν νΈμ€νΈμ μ 보 (λλ©μΈ)
μμ²μμ νμ
νλμ IPμ μ¬λ¬ λλ©μΈμ΄ μ μ©λμμ κ²½μ°
Location
νμ΄μ§ 리λ€μ΄λ μ
3xx μλ΅μ κ²°κ³Όμ Location ν€λκ° μμΌλ©΄, Location μμΉλ‘ μλ μ΄λ
201 (Created), 3xx (Redirection)
μΈμ¦
Authorization
ν΄λΌμ΄μΈνΈ μΈμ¦ μ 보λ₯Ό μλ²μ μ λ¬
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
WWW-Authenticate
리μμ€ μ κ·Όμ νμν μΈμ¦ λ°©λ² μ μ
μΏ ν€
Set-Cookie
μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μΏ ν€ μ λ¬(μλ΅)
Cookie
ν΄λΌμ΄μΈνΈκ° μλ²μμ λ°μ μΏ ν€λ₯Ό μ μ₯νκ³ , HTTP μμ²μ μλ²λ‘ μ λ¬
λμ
λ‘κ·ΈμΈ
μλ²λ Set-Cookieμ user μ 보λ₯Ό λ΄μμ μλ΅
μΉλΈλΌμ°μ λ΄λΆ μΏ ν€ μ μ₯μμ μΏ ν€(user) μ 보 μ μ₯
λ‘κ·ΈμΈ μ΄ν μμ²μ λ³΄λΌ λλ§λ€ μλμΌλ‘ μΏ ν€ μ μ₯μλ₯Ό μ‘°ν ν Cookie ν€λλ₯Ό λ§λ€μ΄μ μλ²μ μ μ‘
μ¬μ©
μ¬μ©μ λ‘κ·ΈμΈ μΈμ κ΄λ¦¬
κ΄κ³ μ 보 νΈλνΉ
μΏ ν€ μ 보λ νμ μλ²μ μ μ‘
λ€νΈμν¬ νΈλν½ μΆκ° μ λ°
μ΅μνμ μ λ³΄λ§ μ¬μ©(session id, μΈμ¦ token)
μΉ μ€ν 리μ§(localStorage, sessionStorage)λ₯Ό μ¬μ©νμ¬ μΉ λΈλΌμ°μ λ΄λΆμ λ°μ΄ν° μ μ₯ κ°λ₯
μλͺ μ£ΌκΈ°
Set-Cookie
expires
=Sat, 26-Dec-2020 04:39:21 GMTmax-age
=3600 (sec)domain
=google.comλͺ μ : λͺ μ λλ©μΈ + μλΈ λλ©μΈ
μλ΅ : νμ¬ λ¬Έμ κΈ°μ€ λλ©μΈ
path
=/λͺ μ κ²½λ‘ ν¬ν¨ νμ κ²½λ‘
Secure
httpsμΈ κ²½μ°μλ§ μΏ ν€ μ μ‘
HttpOnly
XSS 곡격 λ°©μ§ / JSμμ μ κ·Ό λΆκ°
SameSite
XSRF 곡격 λ°©μ§
μμ² λλ©μΈκ³Ό μΏ ν€ μ€μ λλ©μΈμ΄ κ°μ κ²½μ°μλ§ μΏ ν€ μ μ‘
μΈμ μΏ ν€: λ§λ£ λ μ§λ₯Ό μλ΅νλ©΄ λΈλΌμ°μ μ’ λ£μ κΉμ§λ§ μ μ§
μμ μΏ ν€: λ§λ£ λ μ§λ₯Ό μ λ ₯νλ©΄ ν΄λΉ λ μ§κΉμ§ μ μ§
HTTP ν΄λ (μΊμμ μ‘°κ±΄λΆ μμ²)
μΊμ κΈ°λ³Έ λμ
λμ
μΊμ μ ν¨ μκ° μ€μ ->
cache-control
: max-age=60μλ΅ κ²°κ³Όλ₯Ό λΈλΌμ°μ μΊμμ μ μ₯
λ λ²μ§Έ μμ² μ μΊμλ₯Ό νμ ν μΊμμμ μ‘°ν (λ€νΈμν¬ μ¬μ©λ κ°μ)
μ¬μμ² μ μΊμ μ ν¨ μκ°μ΄ μ΄κ³Όλμλ€λ©΄ κ°±μ
κ²μ¦ ν€λμ μ‘°κ±΄λΆ μμ² (Last-Modified)
μΊμ λ§λ£νμλ μλ²μμ λ°μ΄ν°λ₯Ό λ³κ²½νμ§ μμλ€λ§ μ μ₯ν΄ λμλ μΊμλ₯Ό μ¬μ¬μ© ν μ μλ€.
μ΄κΈ° μμ² μ λ°μ΄ν° μ΅μ’ μμ μΌμ μΊμμ ν¨κ» μ μ₯ (κ²μ¦ ν€λ)
Last-Modified
: Wed, 21 July 2021 07:28:00 GMT
μΊμ μκ° μ΄κ³Ό ν μ¬μμ² μ λ°μ΄ν° μ΅μ’ μμ μΌμ ν€λμ ν¨κ» μ λ¬ (μ‘°κ±΄λΆ μμ²)
if-modified-since
: Wed, 21 July 2021 07:28:00 GMT
μλ²μμ λ°μ΄ν°κ° μμ λμ§ μμκ² νμΈλλ©΄ 304 Not Modified λ‘ μλ΅
HTTP Bodyλ ν¬ν¨νμ§ μκ³ Header λ©ν μ λ³΄λ§ μλ΅
ν΄λΌμ΄μΈνΈλ μΊμμ μ μ₯λμ΄ μλ λ°μ΄ν° μ¬μ¬μ©
κ²μ¦ ν€λμ μ‘°κ±΄λΆ μμ² (ETag)
Entity Tag : Last-Modifiedμ λ¨μ 보μ
μΊμ μ μ΄ λ‘μ§μ μλ²μμ κ΄λ¦¬
μΊμ λ°μ΄ν°λ μμμ κ³ μ λ²μ νΉμ Hash μ΄λ¦ 보μ
μ΄κΈ° μμ² μ ETagλ₯Ό μΊμμ ν¨κ» μ μ₯ (κ²μ¦ ν€λ)
ETag
: "a2jiodwjekjl3"
μΊμ μκ° μ΄κ³Ό ν μ¬μμ² μ ETagλ₯Ό ν€λμ ν¨κ» μ λ¬ (μ‘°κ±΄λΆ μμ²)
If-None-Match
: "aaaaaaaaaa"
μλ²μμ λ°μ΄ν°κ° μμ λμ§ μμκ² νμΈλλ©΄ 304 Not Modified λ‘ μλ΅
HTTP Bodyλ ν¬ν¨νμ§ μκ³ Header λ©ν μ λ³΄λ§ μλ΅
ν΄λΌμ΄μΈνΈλ μΊμμ μ μ₯λμ΄ μλ λ°μ΄ν° μ¬μ¬μ©
μΊμμ μ‘°κ±΄λΆ μμ² ν€λ
Cache-Control
: μΊμ μ μ΄
max-age
: μΊμ μ ν¨ μκ° (μ΄)no-cache
: (μ΄ν°λ μΊμν΄λ λμ§λ§), νλ‘μ μΊμκ° μλ νμ μμλ²μ λ³κ²½μ¬ν κ²μ¦ ν μ¬μ©no-store
: λ°μ΄ν°μ λ―Όκ°ν μ λ³΄κ° μμΌλ―λ‘ μ μ₯ Xmust-revalidate
: μΊμ λ§λ£ ν μ΅μ΄ μ‘°ν μ μ μλ²μ κ²μ¦
νλ‘μ μλ²
ν΄μΈ μμλ²μ μλ λ°μ΄ν°λ₯Ό λΈλΌμ°μ μμ(private cache)λΉ λ₯΄κ² μ΄μ©νκΈ° μν΄ μ€κ°(νλ‘μ μΊμ μλ², public cache)μμ 곡μ©μΌλ‘ μ¬μ©νλ μΊμ μλ²
μΊμ μ§μμ΄(directives)
Cache-Control: public
μλ΅μ΄ public μΊμμ μ μ₯ κ°λ₯
Cache-Control: private
μλ΅μ΄ ν΄λΉ μ¬μ©μλ§μ μν κ², private μΊμμ μ μ₯(κΈ°λ³Έκ°)
μΊμ 무ν¨ν
Cache-Control
: no-cache, no-store, must-revalidate
Pragma
: no-cache # HTTP 1.0 νμ νΈν
Reference
HTTP μλ²½κ°μ΄λ λμ
Last updated