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