[Network] HTTP ํค๋
6-1. HTTP ๋ฉ์์ง ํค๋
- HTTP ํ๋กํ ์ฝ์ ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค์๋ ๋ฐ๋์ ๋ฉ์์ง ํค๋๊ฐ ํฌํจ๋์ด ์์
- ๋ฉ์์ง ํค๋์๋ ํด๋ผ์ ์๋ฒ๊ฐ ๋ฆฌํ์คํธ๋ ๋ฆฌ์คํฐ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ ๋ณด๊ฐ ๋ค์ด์์
๋ฆฌํ์คํธ์ HTTP ๋ฉ์์ง
- ๋ฉ์๋, URI, HTTP ๋ฒ์ , HTTP ํค๋ ํ๋ ๋ฑ์ผ๋ก ๊ตฌ์ฑ
๋ฆฌ์คํฐ์ค์ HTTP ๋ฉ์์ง
-
HTTP ๋ฉ์์ง์ HTTP ๋ฒ์ , ์ํ ์ฝ๋(์ฝ๋์ ์ค๋ช ), HTTP ํค๋ ํ๋ ๋ฑ์ผ๋ก ๊ตฌ์ฑ
- HTTP ํค๋ ํ๋ : ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค ์์ชฝ ๋ชจ๋ ์กด์ฌํ๋ HTTP ๋ฉ์์ง์ ๊ดํ ์ ๋ณด๋ฅผ ๊ฐ์ง
6-2. HTTP ํค๋ ํ๋
HTTP ํค๋ ํ๋๋ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค
HTTP ํค๋ ํ๋
- HTTP ๋ฉ์์ง๋ฅผ ๊ตฌ์ฑํ๋ ์์์ ํ๋
- ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค์ ์ฌ์ฉ
- ์ค์ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ญํ
- ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ๋ ์ฌ์ฉํ๊ณ ์๋ ์ธ์ด, ์ธ์ฆ ์ ๋ณด ๋ฑ์ ๋ธ๋ผ์ฐ์ or ์๋ฒ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ
HTTP ํค๋ ํ๋์ ๊ตฌ์กฐ
- ํค๋ ํ๋ ๋ช ๊ณผ ํ๋ ๊ฐ์ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถํ์ฌ ๊ตฌ์ฑ
ํค๋ ํ๋ ๋ช
: ํ๋ ๊ฐ
- ์๋ฅผ๋ค์ด HTTP ํค๋ ํ๋์ ๋ฉ์์ง ๋ฐ๋์ ์ค๋ธ์ ํธ์ ํ์
์ ๊ฐ๋ฆฌํค๋
Content-Type
๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ- ํค๋ ํ๋ ๋ช
:
Content-Type
- ํ๋ ๊ฐ : ๋ฌธ์์ด
text/html
- ํค๋ ํ๋ ๋ช
:
ex) Content-Type:text/html
- ํ๋์ HTTP ํค๋ ํ๋๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ ๊ฐ์ ๊ฐ์ง ์ ์์
ex) Keep-Alive:timeout=15,max=100
HTTP ํค๋ ํ๋๊ฐ ์ค๋ณต๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ๋ ๊น?
- HTTP ๋ฉ์์ง ํค๋ ์ค์ ๊ฐ์ ํค๋ ํ๋ ๋ช
์ด ๋ ๊ฐ ์ด์ ์๋ค๋ฉด?
- ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํจ
- ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ ์ต์ด์ ํค๋ ํ๋๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ ๋ง์ง๋ง ํค๋ ํ๋๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํจ
4์ข ๋ฅ์ HTTP ํค๋ ํ๋
HTTP ํค๋ ํ๋๋ ์ฉ๋์ ๋ฐ๋ผ 4์ข ๋ฅ๋ก ๋ถ๋ฅ
- ์ผ๋ฐ์ ์ธ ํค๋ ํ๋ (General Header Fields)
- ๋ฆฌํ์คํธ ๋ฉ์์ง์ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง ๋ ๋ค ์ฌ์ฉ๋๋ ํค๋
- ๋ฆฌํ์คํธ ํค๋ ํ๋ (Request Header Fields)
- ํด๋ผ์์ ์๋ฒ๋ก ์ก์ ๋ ๋ฆฌํ์คํธ ๋ฉ์์ง์ ์ฌ์ฉ๋๋ ํค๋
- ๋ฆฌํ์คํธ์ ๋ถ๊ฐ์ ์ ๋ณด, ํด๋ผ์ ์ ๋ณด, ๋ฆฌ์คํฐ์ค์ ์ฝํ ์ธ ์ ๊ดํ ์ฐ์ ์์ ๋ฑ์ ๋ถ๊ฐํจ
- ๋ฆฌ์คํฐ์ค ํค๋ ํ๋ (Response Header Fields)
- ์๋ฒ์์ ํด๋ผ๋ก ์ก์ ํ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง์ ์ฌ์ฉ๋๋ ํค๋
- ๋ฆฌ์คํฐ์ค์ ์ ๋ณด, ์๋ฒ์ ์ ๋ณด, ํด๋ผ์ ์ถ๊ฐ ์ ๋ณด ์๊ตฌ ๋ฑ์ ๋ถ๊ฐํจ
- ์ํฐํฐ ํค๋ ํ๋ (Entity Header Fileds)
- ๋ฆฌํ์คํธ ๋ฉ์์ง์ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง์ ํฌํจ๋ ์ํฐํฐ์ ์ฌ์ฉ๋๋ ํค๋
- ์ฝํ ์ธ ๊ฐฑ์ ์๊ฐ ๋ฑ์ ์ํฐํฐ์ ๊ณ ๋ํ ์ ๋ณด๋ฅผ ๋ถ๊ฐํจ
HTTP/1.1 ํค๋ ํ๋ ์ผ๋
- HTTP/1.1์ ์ ์๋์ด ์๋ ํค๋ ํ๋๋ 47์ข ๋ฅ๊ฐ ์์
์ผ๋ฐ ํค๋ ํ๋
ํค๋ ํ๋๋ช | ์ค๋ช |
---|---|
Cache-Control | ์บ์ฑ ๋์ ์ง์ |
Connection | Hop-by-hop ํค๋, ์ปค๋ฅ์ ๊ด๋ฆฌ |
Date | ๋ฉ์์ง ์์ฑ ๋ ์ง |
Pragma | ๋ฉ์์ง ์ ์ด |
Trailer | ๋ฉ์์ง์ ๋์ ์๋ ํค๋์ ์ผ๋ |
Transfer-Encoding | ๋ฉ์์ง ๋ฐ๋์ ์ ์ก ์ฝ๋ฉ ํ์ ์ง์ |
Upgrade | ๋ค๋ฅธ ํ๋กํ ์ฝ์ ์ ๊ทธ๋ ์ด๋ |
Via | ํ๋ก์ ์๋ฒ์ ๊ดํ ์ ๋ณด |
Warning | ์๋ฌ ํต์ง |
๋ฆฌํ์คํธ ํค๋ ํ๋
ํค๋ ํ๋๋ช | ์ค๋ช |
---|---|
Accept | ์ ์ ์์ด์ ํธ๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋ฏธ๋์ด ํ์ |
Accept-Charset | ๋ฌธ์์ ์ฐ์ ์์ |
Accept-Encoding | ์ฝํ ์ธ ์ธ์ฝ๋ฉ ์ฐ์ ์์ |
Accpet-Language | ์ธ์ด(์์ฐ์ด) ์ฐ์ ์์ |
Authorization | ์น ์ธ์ฆ์ ์ํ ์ ๋ณด |
Expect | ์๋ฒ์ ๋ํ ํน์ ๋์์ ๊ธฐ๋ |
From | ์ ์ ์ ๋ฉ์ผ ์ฃผ์ |
Host | ์๊ตฌ๋ ๋ฆฌ์์ค์ ํธ์คํธ |
If-Match | ์ํฐํฐ ํ๊ทธ์ ๋น๊ต |
If-Modified-Since | ๋ฆฌ์์ค์ ๊ฐฑ์ ์๊ฐ ๋น๊ต |
If-None-Match | ์ํฐํฐ ํ๊ทธ์ ๋น๊ต |
If-Range | ๋ฆฌ์์ค๊ฐ ๊ฐฑ์ ๋์ง ์์ ๊ฒฝ์ฐ์ ์ํฐํฐ์ ๋ฐ์ดํธ ๋ฒ์์ ์๊ตฌ๋ฅผ ์ก์ |
If-Unmodified-Since | ๋ฆฌ์์ค์ ๊ฐฑ์ ์๊ฐ ๋น๊ต(If-Modified-Since์ ๋ฐ๋) |
Max-Forwards | ์ต๋ ์ ์ก ํ ์ |
Proxy-Authorization | ํ๋ก์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ํ ์ ๋ณด |
Range | ์ํฐํฐ ๋ฐ์ดํธ ๋ฒ์ ์๊ตฌ |
Referer | ๋ฆฌํ์คํธ์ค์ URI๋ฅผ ์ทจ๋ํ๋ ๊ณณ |
TE | ์ ์ก ์ธ์ฝ๋ฉ์ ์ฐ์ ์์ |
User-Agent | HTTP ํด๋ผ์ด์ธํธ์ ์ ๋ณด |
๋ฆฌ์คํฐ์ค ํค๋ ํ๋
ํค๋ ํ๋๋ช | ์ค๋ช |
---|---|
Accept-Ranges | ๋ฐ์ดํธ ๋จ์์ ์๊ตฌ๋ฅผ ์์ ํ ์ ์๋์ง ์๋์ง ์ฌ๋ถ |
Age | ๋ฆฌ์์ค์ ์ ์ ๊ฒฝ๊ณผ ์๊ฐ |
Etag | ๋ฆฌ์์ค ํน์ ํ๊ธฐ ์ํ ์ ๋ณด |
Location | ํด๋ผ์ด์ธํธ๋ฅผ ์ง์ ํ URI์ ๋ฆฌ๋ค์ด๋ ํธ |
Proxy-Authenticate | ํ๋ก์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ํ ์ ๋ณด |
Retry-After | ๋ฆฌํ์คํธ ์ฌ์ํ์ ํ์ด๋ฐ ์๊ตฌ |
Server | HTTP ์๋ฒ ์ ๋ณด |
Vary | ํ๋ก์ ์๋ฒ์ ๋ํ ์บ์ ๊ด๋ฆฌ ์ ๋ณด |
WWW-Authenticate | ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ํ ์ ๋ณด |
์ํฐํฐ ํค๋ ํ๋
ํค๋ ํ๋๋ช | ์ค๋ช |
---|---|
Allow | ๋ฆฌ์์ค๊ฐ ์ ๊ณตํ๋ HTTP ๋ฉ์๋ |
Content-Encoding | ์ํฐํฐ ๋ฐ๋์ ์ ์ฉ๋๋ ์ฝํ ์ธ ์ธ์ฝ๋ฉ |
Content-Language | ์ํฐํฐ์ ์์ฐ์ด |
Content-Length | ์ํฐํฐ ๋ฐ๋์ ์ฌ์ด์ฆ(๋จ์:๋ฐ์ดํธ) |
Content-Location | ๋ฆฌ์์ค์ ๋์ํ๋ ๋์ฒด URI |
Content-MD5 | ์ํฐํฐ ๋ฐ๋์ ๋ฉ์์ง ๋ค์ด์ ์คํธ |
Content-Range | ์ํฐํฐ ๋ฐ๋์ ๋ฒ์ ์์น |
Content-Type | ์ํฐํฐ ๋ฐ๋์ ๋ฏธ๋์ด ํ์ |
Expires | ์ํฐํฐ ๋ฐ๋์ ์ ํจ๊ธฐํ ๋ ์ง |
Last-Modified | ๋ฆฌ์์ค์ ์ต์ข ๊ฐฑ์ ๋ ์ง |
HTTP/1.1 ์ด์ธ์ ํค๋ ํ๋
- HTTP์์ ๊ตํ๋๋ HTTP ํค๋ ํ๋๊ฐ 47์ข
๋ฅ ์ด์ธ์ ๋ ์์
- ex) ์ฟ ๊ธฐ์ Set-Cookie, Content-Disposition ๋ฑ
End-to-end ํค๋์ Hop-by-hop ํค๋
- HTTP ํค๋ ํ๋๋ ์บ์์ ๋น์บ์ ํ๋ก์์ ๋์์ ์ ์๋ฅผ ์ํด 2๊ฐ์ง๋ก ๋ถ๋ฅ ๋์ด ์์
End-to-end ํค๋
- ํค๋๋ ๋ฆฌํ์คํธ๋ ๋ฆฌ์คํฐ์ค์ ์ต์ข ์์ ์์๊ฒ ์ ์ก๋จ
- ์บ์์์ ๊ตฌ์ถ๋ ๋ฆฌ์คํฐ์ค ์ค ๋ณด์กด๋์ผ ํ๊ณ , ๋ค์ ์ ์ก๋์ง ์์ผ๋ฉด ์๋๋๋ก ๋์ด ์์
Hop-by-hop ํค๋
- ํค๋๋ ํ ๋ฒ ์ ์ก์ ๋ํด์๋ง ์ ํจํ๊ณ ์บ์์ ํ๋ก์์ ์ํด์ ์ ์ก๋์ง ์๋ ๊ฒ๋ ์์
- HTTP/1.1๊ณผ ๊ทธ ์ดํ์์ ์ฌ์ฉ๋๋ Hop-by-hop ํค๋๋ Connection ํค๋ ํ๋์ ์ด๊ฑฐํด์ผ ํจ
HTTP/1.1์์ Hop-by-hop ํค๋์ 8๊ฐ์ ํค๋ ํ๋
- Connetion
- Keep-Alive
- Proxy-Authenticate
- Proxy-Authorization
- Trailer
- TE
- Transfer-Encoding
- Upgrade
์ด์ธ์๋ ๋ชจ๋ End-by-end ํค๋์ ๋ถ๋ฅ๋จ
6-3. HTTP/1.1 ์ผ๋ฐ ํค๋ ํ๋
Cache-Control
- ๋๋ ํฐ๋ธ๋ก ๋ถ๋ฆฌ๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์บ์ฑ ๋์์ ์ง์ ํจ
- ์ง์ ํ ๋๋ ํฐ๋ธ์๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ์ด ์์
- ์ฌ๋ฌ ๊ฐ์ ๋๋ ํฐ๋ธ๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถ
- ๋๋ ํฐ๋ธ๋ ๋ฆฌํ์คํธ ๋ฐ ๋ฆฌ์คํฐ์ค ํ ๋์ ์ฌ์ฉํ ์ ์์
ex) Cache-Control: private, max-age=0, no-cache
Cache-Control ๋๋ ํฐ๋ธ ์ผ๋
์บ์ ๋ฆฌํ์คํธ ๋๋ ํฐ๋ธ
๋๋ ํฐ๋ธ | ํ๋ผ๋ฏธํฐ | ์ค๋ช |
---|---|---|
no-cache | ์์ | ์ค๋ฆฌ์ง ์๋ฒ์ ๊ฐ์ ์ ์ธ ์ฌ๊ฒ์ฆ |
no-store | ์์ | ์บ์๋ ๋ฆฌํ์คํธ, ๋ฆฌ์คํฐ์ค์ ์ผ๋ถ๋ถ์ ๋ณด์กดํด์๋ ์๋จ |
max-age = [์ด] | ํ์ | ๋ฆฌ์คํฐ์ค์ ์ต๋ age ๊ฐ |
max-state( = [์ด]) | ์๋ต ๊ฐ๋ฅ | ๊ธฐํ์ด ์ง๋ ๋ฆฌ์คํฐ์ค๋ฅผ ์์ |
์บ์ ๋ฆฌ์คํฐ์ค ๋๋ ํฐ๋ธ
๋๋ ํฐ๋ธ | ํ๋ผ๋ฏธํฐ | ์ค๋ช |
---|---|---|
public | ์์ | ์ด๋๊ฐ์ ๋ฆฌ์คํฐ์ค ์บ์๊ฐ ๊ฐ๋ฅ |
private | ์๋ต ๊ฐ๋ฅ | ํน์ ์ ์ ์ ๋ํด์๋ง ๋ฆฌ์คํฐ์ค |
no-cache | ์๋ต ๊ฐ๋ฅ | ์ ํจ์ฑ์ ์ฌํ์ธ ์์ด๋ ์บ์๋ ์ฌ์ฉํด์๋ ์๋จ |
no-store | ์์ | ์บ์๋ ๋ฆฌํ์คํธ, ๋ฆฌ์คํฐ์ค์ ์ผ๋ถ๋ถ์ ๋ณด์กดํด์๋ ์๋จ |
no-transform | ์์ | ํ๋ก์๋ ๋ฏธ๋์ด ํ์ ์ ๋ณ๊ฒฝํด์๋ ์๋จ |
must-revalidate | ์์ | ์บ์ ๊ฐ๋ฅํ์ง๋ง ์ค๋ฆฌ์ง ์๋ฒ์ ๋ฆฌ์์ค์ ์ฌํ์ธ์ ์๊ตฌ |
proxy-revaliate | ์์ | ์ค๊ฐ ์บ์ ์๋ฒ์ ๋ํด์ ์บ์ํ๋ ๋ฆฌ์คํฐ์ค์ ์ ํจ์ฑ์ ์ฌํ์ธ์ ์๊ตฌ |
max-age = [์ด] | ํ์ | ๋ฆฌ์คํฐ์ค์ ์ต๋ Age ๊ฐ |
s-maxage = [์ด] | ํ์ | ๊ณต์ ์บ์ ์๋ฒ์ ๋ฆฌ์คํฐ์ค ์ต๋ Age ๊ฐ |
cache-extension | - | ์๋ก์ด ๋๋ ํฐ๋ธ๋ฅผ ์ํ ํ ํฐ |
์บ์๊ฐ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋๋ ํฐ๋ธ
1) public ๋๋ ํฐ๋ธ
Cache-Control: public
- ๋ค๋ฅธ ์ ์ ์๊ฒ๋ ๋๋ ค์ค ์ ์๋ ์บ์๋ฅผ ํด๋ ์ข๋ค๋ ๊ฒ์ ์๋ฏธ
2) private ๋๋ ํฐ๋ธ
Cache-Control: private
- ๋ฆฌ์คํฐ์ค๋ ํน์ ์ ์ ๋ง์ ๋์์ผ๋ก ํ๊ณ ์๋ค๋ ๊ฒ์ ์๋ฏธ
public
๋๋ ํฐ๋ธ์ ๊ธฐ๋ฅ์ด ๋ฐ๋- ์บ์ ์๋ฒ๋ ํน์ ์ ์ ๋ฅผ ์ํด ๋ฆฌ์์ค๋ฅผ ์บ์ํ ์ ์์ง๋ง, ๋ค๋ฅธ ์ ์ ๋ก ๋ถํฐ ๊ฐ์ ๋ฆฌํ์คํธ๊ฐ ์จ๋ค๋ฉด ๊ทธ ์บ์๋ฅผ ๋ฐํํ์ง ์๋๋ก ํจ
3) no-cache ๋๋ ํฐ๋ธ
Cache-Control: no-cache
- ์บ์๋ก๋ถํฐ ์ค๋๋ ๋ฆฌ์์ค๊ฐ ๋ฐํ๋๋๊ฒ์ ๋ง๊ธฐ ์ํด ์ฌ์ฉ
- ํด๋ผ์ ๋ฆฌํ์คํธ๋ก
no-cache
๋๋ ํฐ๋ธ ์ฌ์ฉ๋ ๊ฒฝ์ฐ- ์บ์๋ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐ์ง ์๊ณ ์ค๊ฐ ์บ์ ์๋ฒ๊ฐ ์ค๋ฆฌ์ง ์๋ฒ๊น์ง ๋ฆฌํ์คํธ๋ฅผ ์ ์กํจ
- ์๋ฒ์ ๋ฆฌ์คํฐ์ค์
no-cache
๋๋ ํฐ๋ธ ์ฌ์ฉ๋ ๊ฒฝ์ฐ- ์บ์ ์๋ฒ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํ ์ ์์
- ์ค๋ฆฌ์ง ์๋ฒ๋ ์บ์ ์๋ฒ๊ฐ ๋ฆฌ์์ค ์ ํจ์ฑ์ ์ฌํ์ธ ์์ด๋ ๊ทธ ๋ฆฌ์คํฐ์ค ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํจ
Cache-Control: no-cache=Location
no-cache
์ ํ๋ ๊ฐ์ ํค๋ ํ๋ ๋ช ์ผ๋ก ์ง์ ๋ ํค๋ ํ๋๋ง ์บ์ํ ์ ์์- ์ง์ ๋ ํค๋ ํ๋ ์ด์ธ์๋ ์บ์ ๊ฐ๋ฅ
์บ์๋ก ๋ณด์กด ๊ฐ๋ฅํ ๊ฒ์ ์ ์ดํ๋ ๋๋ ํฐ๋ธ
1) no-store ๋๋ ํฐ๋ธ
Cache-Control: no-store
- ๋ฆฌํ์คํธ(๋์๋๋ ๋ฆฌ์คํฐ์ค) ํน์ ๋ฆฌ์คํฐ์ค์ ๊ธฐ๋ฐ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์์ ๋ํ๋
- ์บ์๋ ๋ฆฌํ์คํธ, ๋ฆฌ์คํฐ์ค์ ์ผ๋ถ๋ถ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ๋ณด์กดํ์ง ๋ชปํ๊ฒ ์ง์ ํจ
์บ์ ๊ธฐํ์ด๋ ๊ฒ์ฆ์ ์ง์ ํ๋ ๋๋ ํฐ๋ธ
1) s-maxage ๋๋ ํฐ๋ธ
Cache-Control: s-maxage=604800(๋จ์: ์ด)
s-maxage
๋๋ ํฐ๋ธ์ ๊ธฐ๋ฅ์max-age
๋๋ ํฐ๋ธ์ ๋์ผํจ- ๋ค๋ฅธ ์ ์ ์ฌ๋ฌ ์ ์ ๊ฐ ์ด์ฉํ ์ ์๋ ๊ณต์ ์บ์ ์๋ฒ์๋ง ์ ์ฉ๋๋ ๊ฒ
- ๊ฐ์ ์ ์ ์ ๋ฐ๋ณตํด์ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํ๋ ์บ์ ์๋ฒ๋ ๋ฌดํจํ ๋๋ ํฐ๋ธ
s-maxage
๋๋ ํฐ๋ธ๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, Expires ํค๋ ํ๋์max-age
๋๋ ํฐ๋ธ๋ ๋ฌด์๋จ
2) max-age ๋๋ ํฐ๋ธ
Cache-Control: max-age=604800(๋จ์: ์ด)
- ํด๋ผ์ ๋ฆฌํ์คํธ๋ก
max-age
๋๋ ํฐ๋ธ๊ฐ ์ฌ์ฉ๋๋ฉด ์ง์ ๋์๋ ๊ฐ๋ณด๋ค ์๋ก์ด ๊ฒฝ์ฐ์๋ ์บ์๋์๋ ๋ฆฌ์์ค๋ฅผ ๋ฐ์๋ค์ผ ์ ์์ - ์ง์ ํ ๊ฐ์ด 0์ด๋ฉด ์บ์ ์๋ฒ๋ ๋ฆฌํ์คํธ๋ฅผ ํญ์ ์ค๋ฆฌ์ง ์๋ฒ์ ๋๊ธธ ํ์ ์์
- ์๋ฒ์ ๋ฆฌ์คํฐ์ค์์
max-age
๋๋ ํฐ๋ธ๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ์บ์ ์๋ฒ๊ฐ ์ ํจ์ฑ์ ์ฌํ์ธ์ ํ์ง ์๊ณ ๋ฆฌ์์ค๋ฅผ ์บ์์ ๋ณด์กดํด ๋๋ ์ต๋ ์๊ฐ์ ๋ํ๋ - HTTP/1.1 ์บ์ ์๋ฒ๋ ๋์์ Expires ํค๋ ํ๋๊ฐ ๋ฌ๋ฆฐ ๊ฒฝ์ฐ์๋
max-age
๋๋ ํฐ๋ธ์ ์ง์ ์ ์ฐ์ ํ๊ณ Expires ํค๋ ํ๋๋ฅผ ๋ฌด์ํจ- HTTP/1.0 ์บ์ ์๋ฒ๋ ๋ฐ๋๋ก
max-age
๋๋ ํฐ๋ธ๊ฐ ๋ฌด์๋จ
- HTTP/1.0 ์บ์ ์๋ฒ๋ ๋ฐ๋๋ก
3) min-fresh ๋๋ ํฐ๋ธ
Cache-Control: min-fresh=60 (๋จ์: ์ด)
- ์บ์๋ ๋ฆฌ์์ค๊ฐ ์ ์ด๋ ์ง์ ๋ ์๊ฐ์ ์ต์ ์ํ์ ๊ฒ์ ๋ฐํํ๋๋ก ์บ์ ์๋ฒ์ ์๊ตฌํจ
- ex) 60์ด๋ก ์ง์ ๋์ด ์๋ ๊ฒฝ์ฐ 60์ด ์ด๋ด์ ์ ํจ ๊ธฐํ์ด ๋๋๋ ๋ฆฌ์์ค๋ฅผ ๋ฆฌ์คํฐ์ค๋ก ๋ฐํํ๋ฉด ์๋จ
1) max-stale ๋๋ ํฐ๋ธ
Cache-Control: max-stale=3600 (๋จ์: ์ด)
- ์บ์๋ ๋ฆฌ์์ค์ ์ ํจ ๊ธฐ๊ฐ์ด ๋๋ฌ๋๋ผ๋ ๋ฐ์๋ค์ผ ์ ์์์ ๋ํ๋
- ๋๋ ํฐ๋ธ์ ๊ฐ์ด ์ง์ ๋์ด ์์ง ์๋ ๊ฒฝ์ฐ, ํด๋ผ๋ ์๋ฌด๋ฆฌ ์๊ฐ์ด ๊ฒฝ๊ณผํ๋๋ผ๋ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐ์๋ค์
- ๊ฐ์ด ์ง์ ๋์ด ์๋ ๊ฒฝ์ฐ, ์ ํจ ๊ธฐํ์ด ์ง๋ ํ๋ก๋ถํฐ ์ง์ ์๊ฐ ๋ด๋ผ๋ฉด ๋ฐ์๋ค์ธ๋ค๋ ๋ป์ ์๋ฒ์ ์ ๋ฌํจ
2) only-if-cached ๋๋ ํฐ๋ธ
Cache-Control: only-if-cached
- ํด๋ผ๋ ์บ์ ์๋ฒ์ ๋ํด์ ๋ชฉ์ ํ ๋ฆฌ์์ค๊ฐ ๋ก์ปฌ ์บ์์ ์๋ ๊ฒฝ์ฐ๋ง ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํ๋๋ก ์๊ตฌํจ
- ์บ์ ์๋ฒ์์ ๋ฆฌ์คํฐ์ค์ ๋ฆฌ๋ก๋์ ์ ํจ์ฑ์ ์ฌํ์ธํ์ง ์๋๋ก ์๊ตฌํจ
- ์บ์ ์๋ฒ๊ฐ ๋ก์ปฌ ์บ์๋ก๋ถํฐ ์๋ตํ ์ ์๋ ๊ฒฝ์ฐ์๋ โ504 Gateway Timeoutโ ์ํ๋ฅผ ๋ฐํํจ
3) must-revalidate ๋๋ ํฐ๋ธ
Cache-Control: must-revalidate
- ๋ฆฌ์คํฐ์ค์ ์บ์๊ฐ ํ์ฌ๋ ์ ํจํ์ง ์๋์ง ์ฌ๋ถ๋ฅผ ์ค๋ฆฌ์ง ์๋ฒ์ ์กฐํ๋ฅผ ์๊ตฌํจ
- ํ๋ก์๊ฐ ์ค๋ฆฌ์ง ์๋ฒ์ ๋๋ฌํ ์ ์๊ณ , ๋ฆฌ์์ค๋ฅผ ๋ค์ ์๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์บ์๊ฐ ํด๋ผ์ 504 Gateway Timeout๋ฅผ ๋ฐํํจ
must-revalidate
๋๋ ํฐ๋ธ๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ๋ฆฌํ์คํธ์์max-stale
๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ผ๋ ๋ฌด์ํจ
4) proxy-revalidate ๋๋ ํฐ๋ธ
Cache-Control: proxy-revalidate
- ๋ชจ๋ ์บ์ ์๋ฒ์ ๋ํด ์ดํ์ ๋ฆฌํ์คํธ๋ก ํด๋น ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํ ๋๋ ๋ฐ๋์ ์ ํจ์ฑ ์ฌํ์ธ์ ํ๋๋ก ์๊ตฌ
5) no-transform ๋๋ ํฐ๋ธ
Cache-Control: no-transform
- ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค์ ์ด๋ ์ชฝ์ ์์ด์๋ ์บ์๊ฐ ์ํฐํฐ ๋ฐ๋์ ๋ฏธ๋์ด ํ์
์ ๋ณ๊ฒฝํ์ง ์๋๋ก ์ง์ ํจ
- ์ด๋ ๊ฒ ํด์ ์บ์ ์๋ฒ ๋ฑ์ ์ํด ์ด๋ฏธ์ง๊ฐ ์์ถ๋๋ ๊ฒ์ ๋ฐฉ์งํจ
Cache-Control ํ์ฅ
1) cache-extension ํ ํฐ
Cache-Control: private, community="UCI"
- Cache-Control ํค๋ ํ๋๋ cache-extension ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋๋ ํฐ๋ธ๋ฅผ ํ์ฅํ ์ ์์
- ์ ์์ ๊ฐ์ด community๋ผ๋ ๋๋ ํฐ๋ธ๋ Cache-Control ํค๋ ํ๋์๋ ์์ง๋ง extension tokens์ ์ํด ์ถ๊ฐํ ์ ์์
- ๋ง์ฝ ์บ์ ์๋ฒ๊ฐ ์๋ก์ด ๋๋ ํฐ๋ธ community๋ฅผ ์ดํดํ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ฌด์๋จ
Connection
- Connection ํค๋ ํ๋๋ ๋ค์ ๋ ๊ฐ์ง ์ญํ ์ ํจ
1. ํ๋ก์์ ๋ ์ด์ ์ ์กํ์ง ์๋ ํค๋ ํ๋๋ฅผ ์ง์
Connection: ๋ ์ด์ ์ ์กํ์ง ์๋ ํค๋ ํ๋ ๋ช
- ํด๋ผ์ ๋ฆฌํ์คํธ ํน์ ์๋ฒ์ ๋ฆฌ์คํฐ์ค์์ Connection ํค๋ ํ๋๋ฅผ ์ฌ์ฉํด ํ๋ก์ ์๋ฒ์ ๋ ์ด์ ์ ์กํ์ง ์๋ ํค๋ ํ๋(hop-by-hop ํค๋)๋ฅผ ์ง์ ํ ์ ์์
2. ์ง์์ ์ ์ ๊ด๋ฆฌ
Connection: Close
- HTTP/1.1์์๋ ์ง์์ ์ ์์ด ๋ํดํธ๋ก ๋์ด ์์
- ๋ฆฌํ์คํธ๋ฅผ ์ก์ ํ๋ ํด๋ผ๋ ์ ์์ด ๊ณ์ ์ ์ง๋๋ฉด์ ์ถ๊ฐ ๋ฆฌํ์คํธ๋ฅผ ์ก์ ํ๋๋ก ํจ
- ์๋ฒ ์ธก์์ ๋ช ์์ ์ผ๋ก ์ ์์ ๋๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ Connection ํค๋ ํ๋์ Close๋ผ๊ณ ์ง์ ํจ
Connection: Keep-Alive
- HTTP/1.1 ์ด์ ๋ฒ์ ์ HTTP์์๋ ์ง์์ ์ ์์ด ๋ํดํธ๊ฐ ์๋์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค๋๋ ๋ฒ์ ์ HTTP์์ ์ง์์ ์ ์์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ Connection ํค๋ ํ๋์
Keep-Alive
๋ผ๊ณ ์ง์ ํด์ผ ํจ
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค๋๋ ๋ฒ์ ์ HTTP์์ ์ง์์ ์ ์์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ Connection ํค๋ ํ๋์
// ๋ฆฌํ์คํธ
GET / HTTP/1.1
Connection: Kepp-Alive
// ๋ฆฌ์คํฐ์ค
HTTP/1.1 200 OK
...
Keep-Alive: timeout=10, max=500
Connection: Keep-Alive
...
- ํด๋ผ๊ฐ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ธ ๊ฒฝ์ฐ, ์๋ฒ์์๋ Keep-Alive ํค๋ ํ๋์ Connection ํค๋ ํ๋๋ฅผ ๋ถ์ฌ์ ๋ฆฌ์คํฐ์คํจ
Date
- Date ํค๋ ํ๋๋ HTTP ๋ฉ์์ง๋ฅผ ์์ฑํ ๋ ์ง๋ฅผ ๋ํ๋
- HTTP/1.1์์๋ RFC1123์ ๋ค์๊ณผ ๊ฐ์ด ๋ ์ง ํฌ๋งท์ด ์ง์ ๋์ด ์์
Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
Date: Tue, 03 Jul 12 04:40:59 GMT
- ์ค๋๋ ๋ฒ์ ์ HTTP์์๋ RFC850์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ ํฌ๋งท์ ์ฌ์ฉํจ
Date: <day-name>, <day>-<month>-<year> <hour>:<minute>:<second> GMT
Date: Tue, 03-Jul-12 04:40:59 GMT
- ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ asctime() ํจ์์ ์ถ๋ ฅ ํ์๊ณผ ๊ฐ์
Date: <day-name>, <month> <day> <hour>:<minute>:<second> <year> GMT
Date: Tue, Jul 03 04:40:59 2012
Pragma
- HTTP/1.1๋ณด๋ค ์ค๋๋ ๋ฒ์ ์ ํ์ ์ผ๋ก HTTP/1.0์์ ํ๋ฐฉ ํธํ์ฑ๋ง์ ์ํด์ ์ ์๋์ด ์๋ ํค๋ ํ๋์
- ์ง์ ํ ์ ์๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ด 1๊ฐ ๋ฟ์
Pragma: no-cache
- ์ผ๋ฐ ํค๋ ํ๋์ด์ง๋ง ํด๋ผ์ ๋ฆฌํ์คํธ์์๋ง ์ฌ์ฉ๋จ
- ํด๋ผ๋ ์บ์๋ ๋ฆฌ์์ค์ ๋ฆฌ์คํฐ์ค๋ฅผ ์ํ์ง ์์์ ๋ชจ๋ ์ค๊ฐ ์๋ฒ์ ์๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉ
- ๋ชจ๋ ์ค๊ฐ ์๋ฒ๊ฐ HTTP/1.1์ ๊ธฐ์ค์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด
Cache-Control: no-cache
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ์ง๋ง, ์ค๊ฐ ์๋ฒ์ HTTP ๋ฒ์ ์ ๋ชจ๋ ํ์ ํ ํ์ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๋ ์ผ์ ํ์ค์ ์ผ๋ก ์์- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ์์ชฝ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ๋ ์์
Cache-Control: no-cachePragma: no-cache
Trailer
- ๋ฉ์์ง ๋ฐ๋์ ๋ค์ ๊ธฐ์ ๋์ด ์๋ ํค๋ ํ๋๋ฅผ ๋ฏธ๋ฆฌ ์ ๋ฌํ ์ ์์
- ์ด ํค๋ ํ๋๋ HTTP/1.1์ ๊ตฌํ๋์ด ์๋ ์ฒญํฌ ์ ์ก ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ ๊ฐ๋ฅํจ
HTTP/1.1 200 OK
Date: Tue, 03, Jul 2012 04:40:56 GMT
Content-Type: text/html
...
Transfer-Encoding: chunked
Trailer: Expires
...(๋ฉ์์ง ๋ฐ๋)...
0
Expires: Tue, 28 Sep 2004 23:59:59 GMT
- ์ด ์์์ Trailer ํค๋ ํ๋์ Expires๋ฅผ ์ง์ ํ๊ณ ์๊ณ , ๋ฉ์์ง ๋ฐ๋์ ๋ค(์ฒญํฌ์ ๊ธธ์ด๊ฐ 0์ ๋ค)์ Expires ํค๋ ํ๋๊ฐ ๋ํ๋๊ณ ์์
Transfer-Encoding
- ๋ฉ์์ง ๋ฐ๋์ ์ฝ๋ฉ ํ์์ ์ง์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋จ
- HTTP/1.1์์ ์ ์ก ์ฝ๋ฉ ํ์์ผ๋ก ์ฒญํฌ ์ ์ก๋ง์ด ์ ์๋์ด์์
HTTP/1.1 200 OK
Date: Tue, 03, Jul 2012 04:40:56 GMT
Cache-Control: public, max-age=604800
Content-Type: text/javascript; charset=utf-8
Expires: Tue, 10 Jul 2012 04:40:56 GMT
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Encoding: gzip
Transfer-Encoding: chunked
Connection: keep-alive
Cf0 <- 16์ง์(10์ง์๋ก 3312)
...3312bytes ์ ๋์ chunk ๋ฐ์ดํฐ
392 <- 16์ง์(10์ง์๋ก 914)
...914bytes ์ ๋์ chunk ๋ฐ์ดํฐ
0
- ์ด ์์ ๊ฒฝ์ฐ, Transfer-Encoding ํค๋ ํ๋๋ก ์ง์ ํ ๊ฒ์ฒ๋ผ ์ฒญํฌ ์ ์ก ์ฝ๋ฉ์ด ์ ํจํ ์ํ๊ณ , 3312 bytes์ 912 bytes์ ์ฒญํฌ ๋ฐ์ดํฐ๋ก ๋ถํ ๋์ด ์์
Upgrade
- HTTP ๋ฐ ๋ค๋ฅธ ํ๋กํ ์ฝ์ ์๋ก์ด ๋ฒ์ ์ด ํต์ ์ ์ด์ฉ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋จ
- ์ง์ ํ๋ ๋์์ด ์ ํ ๋ค๋ฅธ ํต์ ํ๋กํ ์ฝ์ด๋ผ๊ณ ํ๋๋ผ๋ ๋ฌธ์ ์์
// ๋ฆฌํ์คํธ
GET /index.htm HTTP/1.1
Upgrade: TLS/1.0
Connection: Upgrade
// ๋ฆฌ์คํฐ์ค
HTTP/1.1 101 Switching Protocols
Upgrade: TLS/1.0, HTTP/1.1
Connection: Upgrade
- ์ด ์์ ๊ฒฝ์ฐ, Upgrade ํค๋ ํ๋์ TLS/1.0๊ฐ ์ง์ ๋์ด ์์
- ์์ชฝ ๋ชจ๋ Connection ํ๋๊ฐ ์ง์ ๋์ด ์๋ ๊ฒ์ ์ฃผ๋ชฉ
- Upgrade ํค๋ ํ๋์ ์ํด ์
๊ทธ๋ ์ด๋ ๋๋ ๋์์ ํด๋ผ์ ์ธ์ ํ ์๋ฒ ์ฌ์ด ๋ฟ์ด๊ธฐ ๋๋ฌธ์ Upgrade ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋
Connection: Upgrade
๋ ์ง์ ํ ํ์๊ฐ ์์ - Upgrade ํค๋ ํ๋๊ฐ ๋ฌ๋ฆฐ ๋ฆฌํ์คํธ์ ๋ํด์ ์๋ฒ๋ ์ํ ์ฝ๋ 101 Switching Protocols๋ผ๋ ๋ฆฌ์คํฐ์ค๋ก ์๋ตํ ์ ์์
Via
- ํด๋ผ์ ์๋ฒ ๊ฐ ๋ฆฌํ์คํธ ํน์ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง์ ๊ฒฝ๋ก๋ฅผ ์๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ํ๋ก์ ํน์ ๊ฒ์ดํธ์จ์ด๋ ์์ ์ ์๋ฒ ์ ๋ณด๋ฅผ Via ํค๋ ํ๋์ ์ถ๊ฐํ ๋ค์ ๋ฉ์์ง๋ฅผ ์ ์กํจ
- ์ด๊ฒ์ traceroute์ ๋ฉ์ผ์ Received ํค๋์ ๊ธฐ๋ฅ๊ณผ ์ ์ฌํจ
- ์ ์ก๋ ๋ฉ์์ง์ ์ถ์ ๊ณผ ๋ฆฌํ์คํธ ๋ฃจํ์ ํํผ ๋ฑ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ํ๋ก์๋ฅผ ๊ฒฝ์ ํ๋ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๋ถ๊ฐํ ํ์๊ฐ ์์
- Via ํค๋๋ ๋ฐฐ์ก ๊ฒฝ๋ก๋ฅผ ์๊ธฐ ์ํด TRACE ๋ฉ์๋์ ์ฐ๊ณํด์ ์์ฃผ ์ฌ์ฉ๋จ
Warning
- HTTP/1.0 ๋ฆฌ์คํฐ์ค ํค๋(Retry-After)๊ฐ HTTP/1.1์์ ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก, ๋ฆฌ์คํฐ์ค์ ๊ดํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๋ฌํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์์ ๊ดํ ๋ฌธ์ ์ ๊ฒฝ๊ณ ๋ฅผ ์ ์ ์ ์ ๋ฌํจ
Warning: 113 gw.hackr.jp:8080 "Heuristic expiration"Tue, 03 Jul -> 2012 05:09:44 GMT
- Warning ํค๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ด ๋์ด ์์
- ๋ง์ง๋ง ๋ ์ง๋ ์๋ต ๊ฐ๋ฅ
Warning: [๊ฒฝ๊ณ ์ฝ๋][๊ฒฝ๊ณ ํ ํธ์คํธ:ํฌํธ ๋ฒํธ]"[๊ฒฝ๊ณ ๋ฌธ]" ([๋ ์ง])
- HTTP/1.1์๋ 7๊ฐ์ ๊ฒฝ๊ณ ์ฝ๋๊ฐ ์ ์๋์ด ์์
- ์ฌ๊ธฐ์ ์ ์๋์ด ์๋ ์ฝ๋์ ๋ํ ๊ฒฝ๊ณ ๋ฌธ์ ๊ถ์ฅ์ฌํญ์
- ๊ฒฝ๊ณ ์ฝ๋๋ ํ์ฅ์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ดํ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์์
HTTP/1.1 ๊ฒฝ๊ณ ์ฝ๋
์ฝ๋ | ๊ฒฝ๊ณ ๋ฌธ | ์ค๋ช |
---|---|---|
110 | Response is Stale | ํ๋ก์๊ฐ ์ ํจ๊ธฐํ์ด ์ง๋ ๋ฆฌ์์ค๋ฅผ ๋ฐํํจ |
111 | Revalidation Failed | ํ๋ก์๊ฐ ๋ฆฌ์์ค์ ์ ํจ์ฑ ์ฌํ์ธ์ ์คํจํ์(์๋ฒ์ ๋๋ฅํ ์ ์๋ ๋ฑ) |
112 | Disconnected Operation | ํ๋ก์๊ฐ ๋คํธ์ํฌ๋ก๋ถํฐ ๊ณ ์๋ก ๋๊ฒจ ์์ |
113 | Heuristic Expiration | ๋ฆฌ์คํฐ์ค๊ฐ 24์๊ฐ์ด์ ๊ฒฝ๊ณผํ๊ณ ์๋ ๊ฒฝ์ฐ(์บ์์ ์ ํจ๊ธฐํ์ 24์๊ฐ ์ด์์ผ๋ก ์ค์ ํ๊ณ ์๋ ๊ฒฝ์ฐ) |
199 | Miscellaneous Warning | ์์์ ๊ฒฝ๊ณ ๋ฌธ |
214 | Transformation Applied | ํ๋ก์๊ฐ ์ธ์ฝ๋ฉ๊ณผ ๋ฏธ๋์ด ํ์ ๋ฑ์ ๋์ํด์ ๋ฌด์ธ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒฝ์ฐ |
299 | Miscellaneous Persistent Warning | ์์์ ๊ฒฝ๊ณ ๋ฌธ |
6-4. ๋ฆฌํ์คํธ ํค๋ ํ๋
- ํด๋ผ ์ธก์์ ์๋ฒ ์ธก์ผ๋ก ์ก์ ๋ ๋ฆฌํ์คํธ ๋ฉ์์ง์ ์ฌ์ฉ๋๋ ํค๋
- ๋ฆฌํ์คํธ์ ๋ถ๊ฐ ์ ๋ณด์ ํด๋ผ์ ์ ๋ณด, ๋ฆฌ์คํฐ์ค์ ์ฝํ ์ธ ์ ๊ดํ ์ฐ์ ์์ ๋ฑ์ ์ถ๊ฐํจ
Accept
Accept: text/html, application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8
- ์ ์ ์์ด์ ํธ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฏธ๋์ด ํ์ ๊ณผ ๋ฏธ๋์ด ํ์ ์ ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉ
- ๋ฏธ๋์ด ํ์ ์ ์ง์ ์ โํ์ /์๋ธ ํ์ โ์ผ๋ก์ ํ ๋ฒ์ ์ฌ๋ฌ ๋ฒ ์ค์ ํ ์๋ ์์
๋ฏธ๋์ด ํ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์
- ํ
์คํธ ํ์ผ
- text/html, text/plain, text/css โฆ
- application/xhtml+xml, application/xml โฆ
- ์ด๋ฏธ์ง ํ์ผ
- image/jpeg, image/gif, image/png โฆ
- ๋์์ ํ์ผ
- video/mpeg, video/quicktime โฆ
- ์ ํ๋ฆฌ์ผ์ด์
์ฉ ๋ฐ์ด๋๋ฆฌ ํ์ผ
- application/octet-stream, application/zip โฆ
- ex) ๋ธ๋ผ์ฐ์ ๊ฐ PNG ์ด๋ฏธ์ง๋ฅผ ํ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ Accept์ image/png๋ฅผ ์ง์ ํ์ง ์๊ณ , ์ฒ๋ฆฌ ๊ฐ๋ฅํ image/gif์ image/jpeg ๋ฑ์ ์ง์ ํ๋๋ก ํจ
- ํ์ํ๋ ๋ฏธ๋์ด ํ์ ์ ์ฐ์ ์์๋ฅผ ๋ถ์ด๊ณ ์ถ์ผ๋ฉด โ:โ ์ผ๋ก ๊ตฌ๋ถํ๊ณ โq=โ๋ก ํ์ํ ํ์ง ์ง์๋ฅผ ๋ํจ
- ํ์ง ๊ณ์๋ 0~1 ๋ฒ์์ ์์์ 3์๋ฆฌ๋ก, 1์ด ๋์ ์ชฝ์
- ํ์ง ๊ณ์์ ์ง์ ์ด ์๋ ๊ฒฝ์ฐ์๋ ์๋ฌต์ ์ผ๋ก โq=1.0โ์ ๋ํ๋
- ์๋ฒ๊ฐ ๋ณต์์ ์ฝํ ์ธ ๋ฅผ ๋ฐํํ ์ ์๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋์ ํ์ง ๊ณ์์ ๋ฏธ๋์ด ํ์ ์ผ๋ก ๋ฐํํ ํ์๊ฐ ์์
Accept-Charset
Accept-Charset:iso-8859-5, unicode-1-1:q+0.8
- ์ ์ ์์ด์ ํธ์์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฌธ์์
์ผ๋ก ๋ฌธ์์
์ ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ๋ฌธ์์ ์ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ง์ ํ ์ ์์
- Accept ํค๋ ํ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ง ์ง์์ ์ํด ์๋์ ์ฐ์ ์์๋ฅผ ํ์ํจ
- ์ด ํค๋ ํ๋๋ ์๋ฒ ๊ตฌ๋ํ ๋ค๊ณ ์์์ด์ ์ ์ด์ฉ๋จ
Accept-Encoding
Accept-Encoding: gzip, deflate
- ์ ์ ์์ด์ ํธ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์ฝํ
์ธ ์ฝ๋ฉ๊ณผ ์ฝํ
์ธ ์ฝ๋ฉ์ ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ์ฝํ ์ธ ์ฝ๋ฉ์ ์ง์ ์ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ง์ ํ ์ ์์
์ฝํ ์ธ ์ฝ๋ฉ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์
- gzip
- ํ์ผ ์์ถ ํ๋ก๊ทธ๋จ gzip(GNU zip)์์ ์์ฑ๋ ์ธ์ฝ๋ฉ ํฌ๋งท(RFC1952)์ผ๋ก Lempel-Ziv ๋ถํธ(LZ77)์ 32๋นํธ CRC๋ฅผ ์ฌ์ฉํจ
- compress
- UNIX ํ์ผ ์์ถ ํ๋ก๊ทธ๋จ
compress
์ ์ํด ๋ง๋ค์ด์ง ์ธ์ฝ๋ฉ ํฌ๋งท์ผ๋ก Lempel-Ziv-Welch ๋ถํธ(LZW)๋ฅผ ์ฌ์ฉํจ
- UNIX ํ์ผ ์์ถ ํ๋ก๊ทธ๋จ
- deflate
- Zlib ํฌ๋งท(RFC1950)๊ณผ deflate ์์ถ ์๊ณ ๋ฆฌ์ฆ(RFC1951)์ ์ํด ๋ง๋ค์ด์ง ์ธ์ฝ๋ฉ ํฌ๋งท์ ์กฐํฉํ ๊ฒ
- identify
- ์์ถ๊ณผ ๋ณํ์ ํ์ง ์๋ ๋ํดํธ ์ธ์ฝ๋ฉ ํฌ๋งท์
- Accept ํค๋ ํ๋์ ๊ฐ์ด ํ์ง์ง์์ ์ํด ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ํ์ํจ
- โ*โ(์ ์คํฐ๋ฆฌ์คํฌ)๋ฅผ ์ง์ ํ๋ฉด ์์ผ๋ ์นด๋๋ก์ ๋ชจ๋ ์ธ์ฝ๋ฉ ํฌ๋งท์ ๊ฐ๋ฆฌํด
Accept-Language
Accept-Language: ko-kr. en-us;q=9.7,en:q=0.3
- ์ ์ ์์ด์ ํธ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์์ฐ์ด์ ์ธํธ(ํ๊ตญ์ด์ ์์ด)์ ์์ฐ์ด ์ธํธ์ ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉ
- ์์ฐ์ด ์ธํธ๋ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ง์ ํ ์ ์์
- Accept ํค๋ ํ๋์ ๊ฐ์ด ํ์ง ์ง์์ ์ํด ์๋์ ์ธ ์ฐ์ ์์๋ฅผ ๋ํ๋
- ์ ์์ ๊ฒฝ์ฐ ํ๊ตญ์ด ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ํ๊ตญ์ด๋ก, ์์ผ๋ฉด ์์ด ๋ฆฌ์์ค๋ก ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐ๊ณ ์ถ๋ค๋ ๊ฒ์ ๋ํ๋
Authorization
Authorization: Basic ...
- ์ ์ ์์ด์ ํธ์ ์ธ์ฆ ์ ๋ณด(ํฌ๋ฆฌ๋ด์ ๊ฐ)์ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ํต์, ์๋ฒ์ ์ธ์ฆ์ ๋ฐ์ผ๋ ค ํ๋ ์ ์ ์์ด์ ํธ๋ ์ํ ์ฝ๋ 401 ๋ฆฌ์คํฐ์ค ๋ค์ ๋ฆฌํ์คํธ์ Authorization ํค๋ ํ๋๋ฅผ ํฌํจํจ
- ๊ณต์ ์บ์๊ฐ Authorization ํค๋ ํ๋๋ฅผ ํฌํจํ๋ ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ์๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋์ํจ
Expect
Expect: 100-continue
- ํด๋ผ๊ฐ ์๋ฒ์ ํน์ ๋์ ์๊ตฌ๋ฅผ ์ ๋ฌ
- ๊ธฐ๋ํ๊ณ ์๋ ์๊ตฌ์ ์๋ฒ๊ฐ ์๋ตํ์ง ๋ชปํด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ํ ์ฝ๋ 417 Expectation Failed๋ฅผ ๋ฐํํจ
- ํด๋ผ๋ ์ด ํค๋ ํ๋์ ์ํ๋ ํ์ฅ์ ๋ธ๋ ค ๋ณด๋ผ ์ ์์ง๋ง HTTP/1.1์ ์ฌ์์์๋ 100-continue(์ํ ์ฝ๋ 100 Continue์ ์๋ฏธ)๋ง ์ ์๋์ด ์์
- ์ํ ์ฝ๋ 100 ๋ฆฌ์คํฐ์ค๋ฅผ ๊ฐ์ง ํด๋ผ๋ ๋ฆฌํ์คํธํ ๋ Expect:100-continue๋ก ์ง์ ํด์ผ ํจ
From
- ์ ์ ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ ์ ์ ๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ฌํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒ์ ์์ง ๋ฑ์ ์์ด์ ํธ ์ฑ ์์์๊ฒ ์ฐ๋ฝ์ฒ ๋ฉ์ผ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋จ
- ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋๋๋ก From ํค๋ ํ๋๋ฅผ ํฌํจํด์ผํจ
- ์์ด์ ํธ์ ๋ฐ๋ผ์๋ User-Agent ํค๋ ํ๋์ ๋ฉ์ผ ์ฃผ์๋ฅผ ํฌํจํ๊ณ ์๋ ๊ฒ๋ ์์
Host
Host: www.hackr.ip
- ๋ฆฌํ์คํธํ ๋ฆฌ์์ค์ ์ธํฐ๋ท ํธ์คํธ์ ํฌํธ ๋ฒํธ๋ฅผ ์ ๋ฌํจ
- Host ํค๋ ํ๋๋ HTTP/1.1์์ ์ ์ผํ ํ์ ํค๋ ํ๋
- Host ํค๋ ํ๋๊ฐ ์กด์ฌํ๋ ์ด์ ๋ 1๋์ ์๋ฒ์์ ๋ณต์์ ๋๋ฉ์ธ์ ํ ๋นํ ์ ์๋ ๊ฐ์ ํธ์คํธ์ ๊ตฌ์กฐ์ ๋งค์ฐ ๊น์ ๊ด๋ จ์ด ์์
- ๋ฆฌํ์คํธ๊ฐ ์๋ฒ์ ์ค๋ฉด ํธ์คํธ ๋ช ์ IP ์ฃผ์๋ก ํด๊ฒฐํด ๋ฆฌํ์คํธ๊ฐ ์ฒ๋ฆฌ๋จ
- ์ด ๋ ๊ฐ์ IP ์ฃผ์๋ก ๋ณต์์ ๋๋ฉ์ธ์ด ์ ์ฉ๋์ด ์๋ค๊ณ ํ๋ค๋ฉด ์ด๋ ๋๋ฉ์ธ์ ๋ํ ๋ฆฌํ์คํธ์ธ์ง ์ ์ ์์
- ๊ทธ๋์ Host ํค๋ ํ๋์ ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์ ํธ์คํธ๋ช ์ ๋ช ํํ๊ฒ ํด๋ ํ์๊ฐ ์์
- ์๋ฒ์ ํธ์คํธ ๋ช ์ด ์ค์ ๋์ด ์์ง ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ๊ฐ์ ๋น์์ ๋ณด๋
Host:
If-Match
- โIf-xxxโ ์์์ ๋ฆฌํ์คํธ ํค๋ ํ๋๋ ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ๋ผ๊ณ ๋ถ๋ฆ
- ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์ ์๋ฒ๋ ์ง์ ๋ ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ์๋ง ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์
If-Match: "123456"
- ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ์ ํ๋๋ก ์๋ฒ ์์ ๋ฆฌ์์ค๋ฅผ ํน์ ํ๊ธฐ ์ํด ์ํฐํฐ ํ๊ทธ(Etag) ๊ฐ์ ์ ๋ฌํจ
- ์ด ๋ ์๋ฒ๋ ์ฝํ Etag ๊ฐ์ ์ฌ์ฉํ ์ ์์
- ์๋ฒ๋ If-Match์ ํ๋ ๊ฐ๊ณผ ๋ฆฌ์์ค์ ETag ๊ฐ์ด ์ผ์นํ ๊ฒฝ์ฐ์๋ง ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ผ ์ ์์
- ์ผ์นํ์ง ์์ผ๋ฉด ์ํ ์ฝ๋ 412 Precondition Failed ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํ
- If-Match ํ๋ ๊ฐ์ *๋ฅผ ์ง์ ํ ์๋ ์์
- ์ด ๊ฒฝ์ฐ ETag ๊ฐ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ๋ฉด ๋ฆฌํ์คํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์
If-Modified-Since
If-Modified-Since: Thu, 15 Apr 2004 00:00:00 GMT
- ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ์ ํ๋๋ก ๋ฆฌ์ค์๊ฐ ๊ฐฑ์ ๋ ์ง์ ํ๋ ๊ฐ๋ณด๋ค ์๋กญ์ง ์๋ค๋ฉด ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ด๊ฒ ๋ค๋ ๋ป์ ์ ๋ฌํจ
- ๋ฆฌ์์ค๊ฐ ๊ฐฑ์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ 304 Not Modified ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํจ
If-None-Match
- ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ์ ํ๋๋ก If-Match์ ๋ฐ๋๋ก ๋์
- ์ง์ ๋ ETag ๊ฐ์ด ์ง์ ๋ ๋ฆฌ์์ค์ ETag ๊ฐ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ด๊ฒ ๋ค๋ ๋ป์ ์ ๋ฌํจ
- GET๊ณผ HEAD ๋ฉ์๋์์ If-None-Match ํค๋ ํ๋๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ต์ ์ ๋ฆฌ์์ค๋ฅผ ์๊ตฌํ๋ ๊ฒ์ด ๋๊ธฐ ๋๋ฌธ์ If-Modified-Since ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น์ทํจ
If-Range
- ์กฐ๊ฑด๋ถ ๋ฆฌํ์คํธ์ ํ๋๋ก If-Range๋ก ์ง์ ํ ํ๋ ๊ฐ(ETag ๊ฐ, ํน์ ๋ ์ง๋ฅผ ์ง์ )๊ณผ ์ง์ ํ ๋ฆฌ์์ค์ ETag ๊ฐ ํน์ ๋ ์ง๊ฐ ์ผ์นํ๋ฉด Range ๋ฆฌํ์คํธ๋ก์ ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๋ ๊ฒ์ ์ ๋ฌํจ
- ์ผ์นํ์ง ์์ผ๋ฉด ๋ฆฌ์์ค ์ ์ฒด๋ฅผ ๋ฐํํจ
- If-Range ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฆฌํ์คํธ๋ ์๋ฒ ์ธก์ ๋ฆฌ์์ค๊ฐ ๊ฐฑ์ ๋์ด ์๋ ๊ฒฝ์ฐ, ํด๋ผ ์ธก์์ ๊ฐ์ง๊ณ ์๋ ๋ฆฌ์์ค์ ์ผ๋ถ๋ถ์ ๋ฌดํจํ ๊ฒ์ด ๋๊ธฐ ๋๋ฌธ์ Range ๋ฆฌํ์คํธ๋ ๋น์ฐํ ๋ฌดํจํจ
- ์ด ๊ฒฝ์ฐ์ ์๋ฒ๋ ์ผ๋จ ์ํ ์ฝ๋ 412 Precondition Failed ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํ๊ณ ํด๋ผ์ ๋ค์ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๋๋ก ์ฌ์ดํจ
- If-Range ํค๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋น๊ตํ๋ฉด 2๋ฐฐ์ ์๊ณ ๊ฐ ํ์ํจ
If-Unmodified-Since
If-Unmodified-Since: Thu, 03 Jul 2012 00:00:00 GMT
- If-Modified-Since์ ๋ฐ๋๋ก ๋์ํจ
- ์ง์ ๋ ๋ฆฌ์์ค๊ฐ ํ๋ ๊ฐ์ ์ง์ ๋ ๋ ์ง ์ดํ์ ๊ฐฑ์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ง ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ด๋๋ก ์ ๋ฌํจ
- ์ง์ ๋ ๋ ์ง ์ดํ์ ๊ฐฑ์ ๋ ๊ฒฝ์ฐ์๋ ์ํ ์ฝ๋ 412 Precondition Failed ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํจ
Max-Forwards
Max-Forwards: 10
- TRACE ํน์ OPTIONS ๋ฉ์๋์ ์ํ ๋ฆฌํ์คํธ๋ฅผ ํ ๋์ ์ ์กํด๋ ์ข์ ์๋ฒ ์์ ์ต๋์น๋ฅผ 10์ง์ ์ ์๋ก ์ง์ ํจ
- ์๋ฒ๋ ๋ค์ ์๋ฒ์ ๋ฆฌํ์คํธ๋ฅผ ์ ์กํ ๋๋ Max-Forwards ๊ฐ์์ 1์ ๋นผ์ ๋ค์ ์ธํธํจ
- Max-Forwards ๊ฐ์ด 0์ธ ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ์๋ ์ ์กํ์ง ์๊ณ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํ ํ์๊ฐ ์์
- HTTP๋ฅผ ์ฌ์ฉํ ํต์ ์์๋ ๋ฆฌํ์คํธ๊ฐ ํ๋ก์ ์๋ฒ ๋ฑ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ๊ฒฝ์ ํด ๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์
- ๋์ค์ ํ๋ก์ ์๋ฒ์์ ๋ฌด์ธ๊ฐ์ ์์ธ์ผ๋ก ๋ฆฌํ์คํธ ์ ์ก์ด ์คํจํ ๊ฒฝ์ฐ ํด๋ผ์ ๋ฆฌ์คํฐ์ค๊ฐ ๋๋์ ์ค์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ ์์
- ์ด๋ฌํ ๋ฌธ์ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์์ธ ์กฐ์ฌ์ Max-Forwards ํค๋ ํ๋๋ ํ์ฉ๋จ
- ํ๋ ๊ฐ์ด 0์ด ๋์๋ ์๋ฒ๊ฐ ๋ฆฌ์คํฐ์ค๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ์๋ฒ๊น์ง์ ์ํฉ์ ์ ์ ์์
Proxy-Authorization
Proxy-Authorization: Basic ...
- ํ๋ก์ ์๋ฒ์์์ ์ธ์ฆ ์๊ตฌ๋ฅผ ๋ฐ์๋ค์ธ ๋์ ์ธ์ฆ์ ํ์ํ ํด๋ผ์ ์ ๋ณด๋ฅผ ์ ๋ฌํจ
- ํด๋ผ์ ์๋ฒ์ HTTP ์ก์ธ์ค ์ธ์ฆ๊ณผ ๋น์ทํ๋ฐ ๋ค๋ฅธ ์ ์ ํด๋ผ์ ํ๋ก์ ์ฌ์ด์ ์ธ์ฆ์ด ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ
- ํด๋ผ์ ์๋ฒ์ ๊ฒฝ์ฐ, Authorization ํค๋ ํ๋์ ๊ฐ์ ์ญํ ์ ํจ
Range
Range: bytes=5001-10000
- ๋ฆฌ์์ค์ ์ผ๋ถ๋ถ๋ง ์ทจ๋ํ๋ Range ๋ฆฌํ์คํธ๋ฅผ ํ ๋ ์ง์ ๋ฒ์๋ฅผ ์ ๋ฌํจ
- Range ํค๋ ํ๋๊ฐ ๋ฌ๋ฆฐ ๋ฆฌํ์คํธ๋ฅผ ๋ฐ์๋ค์ธ ์๋ฒ๊ฐ ๋ฆฌํ์คํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ ์ํ ์ฝ๋ 206 Partial Content ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐํํจ
- Range๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ์๋ 200 OK ๋ฆฌ์คํฐ์ค๋ก ๋ฆฌ์์ค ์ ์ฒด๋ฅผ ๋ฐํํจ
Referer
- ๋ฆฌํ์คํธ๊ฐ ๋ฐ์ํ ๋ณธ๋ ๋ฆฌ์์ค์ URI๋ฅผ ์ ๋ฌํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก Referer ํค๋ ํ๋๋ ๋ณด๋ด์ ธ์ผ ํ์ง๋ง, ๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ์ง์ URI๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ์ ๋ณด์์ ๋ฐ๋์งํ์ง ์๋ค๊ณ ํ๋จ๋ ๊ฒฝ์ฐ์๋ ๋ณด๋ด์ง ์์๋ ๋จ
- ๋ณธ๋ ๋ฆฌ์์ค์ URI์ ์ฟผ๋ฆฌ์ ID ๋ฐ ํจ์ค์๋์ ๋น๋ฐ ์ ๋ณด ๋ฑ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, Referer๋ฅผ ํตํด ๊ทธ ์ ๋ณด๊ฐ ๋ค๋ฅธ ์๋ฒ์ ๋์ค๋์ด ๋ฒ๋ฆด ๊ฐ๋ฅ์ฑ์ด์์
- ๋ํ Referer ์ฒ ์๋ โReferrerโ๊ฐ ์ฌ๋ฐ๋ฅด์ง๋ง, ์๋ชป๋ ์ฒ ์ฐจ ๊ทธ๋๋ ์ฌ์ฉ๋๊ณ ์์
TE
TE: gzip, deflate;q=0.5
- ๋ฆฌ์คํฐ์ค๋ก ๋ฐ์ ์ ์๋ ์ ์ก ์ฝ๋ฉ์ ํ์๊ณผ ์ฐ์ ์์๋ฅผ ์ ๋ฌํจ
- Accept-Encoding ํค๋ ํ๋์ ๋งค์ฐ ๋น์ทํ์ง๋ง ์ฌ๊ธฐ์ ์ ์ก ์ฝ๋ฉ์ ์ ์ฉ๋จ
- TE ํค๋ ํ๋๋ ์ ์ก ์ฝ๋ฉ ์ง์ ์ด์ธ์ Trailer๋ฅผ ๋๋ฐํ๋ ์ฒญํฌ ์ ์ก ์ธ์ฝ๋ฉ ํ์์ ์ง์ํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- ์ด ๊ฒฝ์ฐ, ํ๋ ๊ฐ์ โtrailersโ๋ผ๊ณ ๊ธฐ๋กํจ
TE: trailers
User-Agent
User-Agent:Mozilla/5.0 ...
- ๋ฆฌํ์คํธ๋ฅผ ์์ฑํ ๋ธ๋ผ์ฐ์ ์ ์ ์ ์์ด์ ํธ์ ์ด๋ฆ ๋ฑ์ ์ ๋ฌํ๊ธฐ ์ํ ํ๋
- ๋ก๋ด ์์ง์ ๋ฆฌํ์คํธ์ ๊ฒฝ์ฐ ๋ก๋ด ์์ง์ ์ฑ ์์ ๋ฉ์ผ ์ฃผ์๊ฐ ๋ถ๊ฐ๋ ๊ฒ๋ ์์
- ํ๋ก์ ๊ฒฝ์ ๋ก ๋ฆฌํ์คํธ์ ๊ฒฝ์ฐ ํ๋ก์ ์๋ฒ์ ์ด๋ฆ ๋ฑ์ด ๋ถ๊ฐ๋ ๊ฒ๋ ์์
6-5. ๋ฆฌ์คํฐ์ค ํค๋ ํ๋
- ์๋ฒ ์ธก์ผ๋ก๋ถํฐ ํด๋ผ ์ธก์ผ๋ก ์ก์ ๋๋ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง์ ์ ์ฉ๋ ํค๋๋ก ๋ฆฌ์คํฐ์ค์ ๋ถ๊ฐ ์ ๋ณด๋ ์๋ฒ์ ์ ๋ณด, ํด๋ผ์ ๋ถ๊ฐ ์ ๋ณด ์๊ตฌ ๋ฑ์ ๋ํ๋
Accept-Ranges
Accept-Ranges: bytes
- ์๋ฒ๊ฐ ๋ฆฌ์์ค์ ์ผ๋ถ๋ถ๋ง ์ง์ ํด์ ์ทจ๋ํ ์ ์๋ Range ๋ฆฌํ์คํธ๋ฅผ ์ ์ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ๋ฌํจ
- ์ง์ ๊ฐ๋ฅํ ํ๋ ๊ฐ์ 2๊ฐ
- ์์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ :
bytes
- ์์ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ :
none
- ์์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ :
Age
Age: 600(๋จ์: ์ด)
- ์ผ๋ง๋ ์ค๋ ์ ์ ์ค๋ฆฌ์ง ์๋ฒ์์ ๋ฆฌ์คํฐ์ค๊ฐ ์์ฑ๋์๋์ง๋ฅผ ์ ๋ฌํจ
- ๋ฆฌ์คํฐ์คํ ์๋ฒ๊ฐ ์บ์ ์๋ฒ๋ผ๋ฉด, ์บ์๋ ๋ฆฌ์คํฐ์ค๊ฐ ๋ค์ ์ค์ฆ๋์๋ ๋๋ถํฐ ๊ฒ์ฆํ ์๊ฐ์ด ๋จ
- ํ๋ก์๊ฐ ๋ฆฌ์คํฐ์ค๋ฅผ ์์ฑํ๋ค๋ฉด Age ํค๋ ํ๋๋ ํ์
ETag
ETag: ...
- ์ํฐํฐ ํ๊ทธ๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ ์ผ์์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ํน์ ํ๊ธฐ ์ํ ๋ฌธ์์ด์ ์ ๋ฌํจ
- ์๋ฒ๋ ๋ฆฌ์์ค๋ง๋ค ETag ๊ฐ์ ํ ๋นํจ
- ๋ฆฌ์์ค๊ฐ ๊ฐฑ์ ๋๋ฉด ETag ๊ฐ๋ ๊ฐฑ์ ํ ํ์๊ฐ ์์
- ETag ๊ฐ์ ๋ฌธ์์๋ ํน๋ณํ ๋ฃฐ์ด ์ ํด์ ธ ์์ง ์๊ณ ์๋ฒ์ ๋ฐ๋ผ ๋ค์ํ ETag ๊ฐ์ ํ ๋นํจ
- ๋ฆฌ์์ค๋ฅผ ์บ์ํ ๋๋ ๋ฆฌ์์ค๋ฅผ ์ผ์์ ์ผ๋ก ์ ํ๊ณ ์ถ์ ์ํฉ์ด ์์
- ex) ํ๊ตญ์ด ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด์ ์ก์ธ์คํ๋ฉด ํ๊ตญ์ด์ ๋ฆฌ์์ค๊ฐ ๋ฐํ๋์ง๋ง ์๋ฌธํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด์ ์ก์ธ์คํ๋ฉด ์์ด์ ๋ฆฌ์์ค๋ฅผ ๋ฐํํจ
- ๋๋ค URI๋ ๊ฐ์ง๋ง URI๋ง์ผ๋ก๋ ์บ์ํ์๋ ๋ฆฌ์์ค๋ฅผ ํน์ ํ๋ ๊ฒ์ ์ด๋ ค์
- ๋์ค์ ๋ค์ด๋ก๋๊ฐ ๋๊ฒจ์ ๋ค์ ํ๋ ๊ฒฝ์ฐ์ ETag ๊ฐ์ ์ฐธ์กฐํด์ ๋ฆฌ์์ค๋ฅผ ํน์ ํจ
๊ฐ๋ ฅํ ETag ๊ฐ๊ณผ ์ฝํ ETag ๊ฐ
- ETag์๋ ๊ฐํ(strong) ETag ๊ฐ๊ณผ ์ฝํ(weak) ETag ๊ฐ์ผ๋ก ๊ตฌ๋ณ๋์ด ์์
1) ๊ฐํ ETag ๊ฐ
- ์ํฐํฐ๊ฐ ์์ฃผ ์กฐ๊ธ ๋ค๋ฅด๋๋ผ๋ ๋ฐ๋์ ๊ฐ์ ๋ณํํจ
ETag: "Usagi-1234"
2) ์ฝํ ETag ๊ฐ
- ๋ฆฌ์์ค๊ฐ ๊ฐ๋ค๋ ๊ฒ๋ง์ ๋ํ๋
- ์๋ฏธ๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค๋ก ๊ทธ ์ฐจ์ด๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ETag ๊ฐ์ด ๋ณํํจ
- ๊ฐ์ ์๋ถ๋ถ์ โW/โ๊ฐ ๋ถ์
ETag: W/"usagi-1234"
Location
Location: http://www....
- ๋ฆฌ์คํฐ์ค์ ์์ ์์ ๋ํด์ Request-URI ์ด์ธ์ ๋ฆฌ์์ค ์ก์ธ์ค๋ฅผ ์ ๋ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ
- ๊ธฐ๋ณธ์ ์ผ๋ก โ3xx: Redirectionโ๋ฆฌ์คํฐ์ค์ ๋ํด์ ๋ฆฌ๋ค์ด๋ ํธ ์ฒ์ URI๋ฅผ ๊ธฐ์ ํจ
- ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ์์๋ Location ํค๋ ํ๋๋ฅผ ํฌํจํ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐ์ผ๋ฉด ๊ฐ์ ๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ ๊ณณ์ ๋ฆฌ์์ค์ ์ก์ธ์ค๋ฅผ ์๋ํจ
Proxy-Authenticate
Proxy-Authenticate: Basic realm="Usagidesign Auth"
- ํ๋ก์ ์๋ฒ์์์ ์ธ์ฆ ์๊ตฌ๋ฅผ ํด๋ผ์ ์ ๋ฌํจ
- ํด๋ผ์ ์๋ฒ์์ HTTP ์ก์ธ์ค ์ธ์ฆ๊ณผ ๋น์ทํ๋ฐ ๋ค๋ฅธ์ ์ ํด๋ผ์ ํ๋ก์ ์ฌ์ด์์ ์ธ์ฆ์ด ์ด๋ฃจ์ด์ง๋ค๋ ๊ฒ
- ํด๋ผ์ ์๋ฒ์ ๊ฒฝ์ฐ WWW-Authorization ํค๋ ํ๋์ ๊ฐ์ ์ญํ ์ ํจ
Retry-After
Retry-After: 120
- ํด๋ผ๊ฐ ์ผ์ ์๊ฐ ํ์ ๋ฆฌํ์คํ๋ฅด ๋ค์ ์ํํด์ผ ํ๋์ง๋ฅผ ์ ๋ฌํจ
- ์ฃผ๋ก ์ํ ์ฝ๋ 503 Service Unavailable ๋ฆฌ์คํฐ์ค๋ 3xx Redirect ๋ฆฌ์คํฐ์ค์ ํจ๊ป ์ฌ์ฉ๋จ
- ๊ฐ์ผ๋ก๋ ๋ ์ง(
<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
๋ฑ์ ํ์)์ด๋ผ๋ ๊ฐ ๋ฆฌ์คํฐ์ค ์ดํ์ ๋ช ์ด๋ฅผ ์ง์ ํ ์ ์์
Server
Server: Apache/2.2.17(Unix)
- ์๋ฒ์ ์ค์น๋์ด ์๋ HTTP ์๋ฒ์ ์ํํธ์จ์ด๋ฅผ ์ ๋ฌํจ
- ์๋ฒ์ ์ํํธ์จ์ด ๋ช ์นญ๋ง์ด ์๋ ๋ฒ์ ์ด๋ ์ต์ ์ ๋ํด์๋ ๊ธฐ์ฌํ๋ ๊ฒฝ์ฐ ์์
Server: Apache/2.2.6 (Unix) PHP/5.2.5
Vary
Vary: Accept-Language
- ์บ์๋ฅผ ์ปจํธ๋กคํ๊ธฐ ์ํด์ ์ฌ์ฉ
- ์ค๋ฆฌ์ง ์๋ฒ๊ฐ ํ๋ก์ ์๋ฒ์ ๋ก์ปฌ ์บ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ง์๋ฅผ ์ ๋ฌํจ
- ์ค๋ฆฌ์ง ์๋ฒ๋ก๋ถํฐ Vary์ ์ง์ ๋์๋ ๋ฆฌ์คํฐ์ค๋ฅผ ๋ฐ์๋ค์ธ ํ๋ก์ ์๋ฒ๋ ์ดํ ์บ์๋ ๋์ ๋ฆฌํ์คํธ์ ๊ฐ์ Vary์ ์ง์ ๋์ด ์๋ ํค๋ ํ๋๋ฅผ ๊ฐ์ง ๋ฆฌํ์คํธ์ ๋ํด์๋ง ์บ์๋ฅผ ๋ฐํํ ์ ์์
- ๊ฐ์ ๋ฆฌ์์ค์ ๋ํ ๋ฆฌํ์ค๋ผ๋ Vary์ ์ง์ ๋์๋ ํค๋ ํ๋๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ค๋ฆฌ์ง ์๋ฒ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ์ทจ๋ํ ํ์๊ฐ ์์
WWW-Authenticate
WWW-Authenticate: Basic realm="Usagidesign Auth"
- HTTP ์ก์ธ์ค ์ธ์ฆ์ ์ฌ์ฉ๋๋๋ฐ Request-URI์ ์ง์ ํ๋ ๋ฆฌ์์ค์ ์ ์ฉํ ์ ์๋ ์ธ์ฆ ์คํค๋ง(โBasicโ or โDigestโ)์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ํ๋ด๋ challenge๋ฅผ ์ ๋ฌํจ
- WWW-Authenticate ํค๋ ํ๋๋ ์ํ ์ฝ๋ 401 Unauthorized ๋ฆฌ์คํฐ์ค์ ๋ฐ๋์ ํฌํจ๋จ
- ์ด ์์์ โrealmโ๋ Request-URI์ ์ง์ ๋ ๋ณดํธ๋์๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ ๋ฌธ์์ด
6-6. ์ํฐํฐ ํค๋ ํ๋
- ๋ฆฌํ์คํธ ๋ฉ์์ง์ ๋ฆฌ์คํฐ์ค ๋ฉ์์ง์ ํฌํจ๋ ์ํฐํฐ์ ์ฌ์ฉ๋๋ ํค๋๋ก ์ฝํ ์ธ ์ ๊ฐฑ์ ์๊ฐ ๊ฐ์ ์ํฐํฐ์ ๊ดํ ์ ๋ณด๋ฅผ ํฌํจํจ
Allow
Allow: GET, HEAD
- Request-URI์ ์ง์ ๋ ๋ฆฌ์์ค๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋์ ์ผ๋์ ์ ๋ฌํจ
- ์๋ฒ๊ฐ ๋ฐ์ ์ ์๋ ๋ฉ์๋๋ฅผ ์์ ํ ๊ฒฝ์ฐ์๋ ์ํ ์ฝ๋ 405 Method Not Allowed ๋ฆฌ์คํฐ์ค์ ํจ๊ป ์์ ๊ฐ๋ฅํ ๋ฉ์๋์ ์ผ๋์ ๊ธฐ์ ํ Allow ํค๋ ํ๋๋ฅผ ๋ฐํํจ
Content-Encoding
Content-Encoding: gzip
- ์๋ฒ๊ฐ ์ํฐํฐ ๋ฐ๋์ ๋ํด์ ์ค์ํ ์ฝํ ์ธ ์ฝ๋ฉ ํ์์ ์ ๋ฌํจ
- ์ฝํ ์ธ ์ฝ๋ฉ์ ์ํฐ๋์ ์ ๋ณด๊ฐ ๋๋ฝ๋์ง ์๋๋ก ์์ถํ ๊ฒ์ ์ง์ํจ
4๊ฐ์ง ์ฝํ ์ธ ์ฝ๋ฉ ํ์
- Gzip
- Compress
- Deflate
- Identity
Content-Language
Content-Language: en
- ์ํฐํฐ ๋ฐ๋์ ์ฌ์ฉ๋ ์์ฐ์ฌ(ํ๊ตญ์ด, ์์ด ๋ฑ)๋ฅผ ์ ๋ฌํจ
Content-Length
Content-Length: 15000
- ์ํฐํฐ ๋ฐ๋์ ํฌ๊ธฐ(๋จ์: bytes)๋ฅผ ์ ๋ฌํจ
- ์ํฐํฐ ๋ฐ๋์ ์ ์ก ์ฝ๋ฉ์ด ์ค์๋ ๊ฒฝ์ฐ์๋ Content-Length ํค๋ ํ๋๋ฅผ ์ฌ์ฉํด์๋ ์๋จ
Content-Location
Content-Location: http://www....
- ๋ฉ์์ง ๋ฐ๋์ ๋์ํ๋ URI๋ฅผ ์ ๋ฌํจ
- Location ํค๋ ํ๋์ ๋ฌ๋ฆฌ Content-Location์ ๋ฉ์์ง ๋ฐ๋๋ก ๋ฐํ๋ ๋ฆฌ์์ค์ URI๋ฅผ ๋ํ๋
Content-MD5
Content-MD5: ...
- ๋ฉ์์ง ๋ฐ๋๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ณ ๋์ฐฉํ๋์ง ํ์ธํ๊ธฐ ์ํด MD5 ์๊ณ ๋ฆฌ์ฆ์ ์ํด์ ์์ฑ๋ ๊ฐ์ ์ ๋ฌํจ
- ๋ฉ์์ง ๋ฐ๋์ MD5 ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํด์ ์ป์ 128๋นํธ์ ๋ฐ์ด๋๋ฆฌ ๊ฐ์ Base64 ์ธ์ฝ๋ฉ์ ํ ๊ฒฐ๊ณผ๋ฅผ ํ๋ ๊ฐ์ ๊ธฐ๋กํจ
- HTTP ํค๋์๋ ๋ฐ์ด๋๋ฆฌ ๊ฐ์ ๊ธฐ๋กํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํด์ Base64๋ก ์ธ์ฝ๋ฉํจ
- ์ ํจ์ฑ ํ์ธ์ ์ํด ์์ ํ ํด๋ผ ์ธก์์ ๋ฉ์์ง ๋ฐ๋์ ๊ฐ์ MD5 ์๊ณ ๋ฆฌ์ฆ ์คํํจ
- ์ด๋ ๊ฒ ํด์ ๋์ถํ ๊ฐ๊ณผ ํ๋ ๊ฐ์ ๋น๊ตํ์ฌ ๋ฉ์์ง ๋ฐ๋๊ฐ ์ฌ๋ฐ๋ฅธ์ง ์ฌ๋ถ๋ฅผ ์ ์ ์์
- ์ด ๋ฐฉ์์๋ ์ฐ๋ฐ์ ์ผ๋ก์ฝํ
์ธ ๊ฐ ๋ณ๊ฒฝ๋์ด ๋ฒ๋ฆฐ ์ฌ์ค์ ์ ์ ์์ง๋ง ์
์๋ฅผ ๊ฐ์ง ๋ณ์กฐ๋ ๊ฒ์ถํ ์ ์์
- ๊ทธ ์ด์ ๋ ์ฝํ ์ธ ๋ฅผ ๋ณ์กฐํ๋ฉด Content-MD5๋ ์ฌ๊ณ์ฐํด์ ๋ณ์กฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํจ
- ํด๋ผ๊ฐ ์์ ํ ๋จ๊ณ์์๋ ๋ฉ์์ง ๋ฐ๋๋ Content-MD5 ํค๋ ํ๋๋ ๋ณ์กฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ๊ฒฌํ ๋ฐฉ๋ฒ์ด ์์]
Content-Range
Content-Range: bytes 5001-10000/10000
- ๋ฒ์๋ฅผ ์ง์ ํด์ ์ผ๋ถ๋ถ๋ง์ ๋ฆฌํ์คํธํ๋ Range ๋ฆฌํ์คํธ์ ๋ํด์ ๋ฆฌ์คํฐ์ค๋ฅผ ํ ๋์ ์ฌ์ฉ๋จ
- ๋ฆฌ์คํฐ์ค๋ก ๋ณด๋ธ ์ํฐํฐ๊ฐ ์ด๋ ๋ถ๋ถ์ ํด๋นํ๋๊ฐ๋ฅผ ์ ๋ฌํจ
- ํ๋ ๊ฐ์๋ ํ์ฌ ๋ณด๋ด๊ณ ์๋ ๊ณณ์ ๋ฐ์ดํธ๋ก ์ง์ ํ ๋ฒ์์ ์ ์ฒด ์ฌ์ด์ฆ๋ฅผ ๊ธฐ๋กํจ
Content-Type
Content-Type: text/html; charset=UTF-8
- ์ํฐํฐ ๋ฐ๋์ ํฌํจ๋๋ ์ค๋ธ์ ํธ์ ๋ฏธ๋์ด ํ์ ์ ์ ๋ฌํจ
- Accept ํค๋ ํ๋์ ๊ฐ์ด, ํ๋ ๊ฐ์ โํ์ /์๋ธ ํ์ โ์ผ๋ก ๊ธฐ๋กํจ
- Charset ํ๋ผ๋ฏธํฐ๋ โiso-8859-1โ๊ณผ โeuc-krโ ๋ฑ์ ๋ฌธ์์ ์ ์ง์ ํจ
Expires
Expires: Web, 04 Jul 2012 08:26:05 GMT
- ๋ฆฌ์์ค์ ์ ํจ ๊ธฐํ ๋ ์ง๋ฅผ ์ ๋ฌํจ
- ์บ์ ์๋ฒ๊ฐ Expires ํค๋ ํ๋๋ฅผ ํฌํจํ ๋ฆฌ์์ค๋ฅผ ์์ ํ ๊ฒฝ์ฐ ํ๋ ๊ฐ์ผ๋ก ์ง์ ๋ ๋ ์ง๊น์ง ๋ฆฌ์คํฐ์ค์ ๋ณต์ฌ๋ณธ์ ์ ์งํ๊ณ ๋ฆฌํ์คํธ์๋ ์บ์๋ก ์๋ตํจ
- ์ง์ ๋ ์ง๊ฐ ์ง๋ ๊ฒฝ์ฐ์๋ ๋ฆฌํ์คํธ๊ฐ ์จ ๋จ๊ณ์์ ์ค๋ฆฌ์ง ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ป์ผ๋ฌ ๊ฐ
- ์ค๋ฆฌ์ง ์๋ฒ๊ฐ ์บ์ ์๋ฒ์ ์บ์๋๋ ๊ฒ์ ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ Date ํค๋ ํ๋์ ํ๋ ๊ฐ๊ณผ ๊ฐ์ ๋ ์ง๋ก ํด๋๋ ๊ฒ์ด ๋ฐ๋์งํจ
- ๋ค๋ง Cache-Control ํค๋ ํ๋์ max-age ๋๋ ํฐ๋ธ๊ฐ ์ง์ ๋์ด ์๋ ๊ฒฝ์ฐ์๋ Expires ํค๋ ํ๋๋ณด๋ค max-age ๋๋ ํฐ๋น์ ์ง์ ์ด ์ฐ์ ์ด๋จ
Last-Modified
Last-Modified: Web, 23 May 2012 09:59:55 GMT
- ๋ฆฌ์์ค๊ฐ ๋ง์ง๋ง์ผ๋ก ๊ฐฑ์ ๋์๋ ๋ ์ง ์ ๋ณด๋ฅผ ์ ๋ฌํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก Request-URI๊ฐ ์ง์ ๋ ๋ฆฌ์์ค๊ฐ ๊ฐฑ์ ๋์๋ ๋ ์ง๊ฐ ๋์ง๋ง CGI ๋ฑ์ ์คํฌ๋ฆฝํธ๋ก ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๊ฒฝ์ฐ์๋ ๊ทธ ๋ฐ์ดํฐ์ ์ต์ข ๊ฐฑ์ ๋ ์ง๊ฐ ๋๋ ๊ฒฝ์ฐ๋ ์์
6-7. ์ฟ ํค๋ฅผ ์ํ ํค๋ ํ๋
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ฟ ํค๋ HTTP/1.1์ ์ฌ์์ธ RFC2616์ ํฌํจ๋ ๊ฒ์ ์๋์ง๋ง ์น ์ฌ์ดํธ์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์
- ์ฟ ํค๋ ์ ์ ์๋ณ๊ณผ ์ํ ๊ด๋ฆฌ์ ์ฌ์ฉ๋๊ณ ์๋ ๊ธฐ๋ฅ์
- ์น ์ฌ์ดํธ๊ฐ ์ ์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ์น ๋ธ๋ผ์ฐ์ ๊ฒฝ์ ๋ก ์ ์ ์ ์ปดํจํฐ ์์ ์ผ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํด ๋๊ณ , ๋ค์์ ๊ทธ ์ ์ ๊ฐ ์น ์ฌ์ดํธ์ ์ก์ธ์ค ํด ์์ ๋ ์ง๋๋ฒ์ ๋ฐํ๋ ์ฟ ํค๋ฅผ ์ก์ ๋ฐ์ ์ ์์
- ์ฟ ํค๊ฐ ํธ์ถ๋์์ ๋๋ ์ฟ ๊ธฐ์ ์ ํจ ๊ธฐํ๊ณผ ์ก์ ์ง์ ๋๋ฉ์ธ, ๊ฒฝ๋ก, ํ๋กํ ์ฝ ๋ฑ์ ์ฒดํฌํ๋ ๊ฒ์ด ๊ฐ๋ฅ
- ์ ์ ํ๊ฒ ๋ฐํ๋ ์ฟ ํค๋ ๋ค๋ฅธ ์น ์ฌ์ดํธ์ ๊ณต๊ฒฉ์์ ๊ณต๊ฒฉ์ ์ํด ๋ฐ์ดํฐ๊ฐ ๋๋๋นํ๋ ์ผ์ ์์
Set-Cookie
Set-Cookie: status-enable; expires=Tue, 05 Jul 2011 07:26:31 GMT; =>path=/;domain=.hack.jp;
- ์๋ฒ๊ฐ ํด๋ผ์ ๋ํด์ ์ํ ๊ด๋ฆฌ๋ฅผ ์์ํ ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ๋ฌํจ
Set-Cookie ํ๋ ์์ฑ
์์ฑ | ์ค๋ช |
---|---|
NAME=VALUE | ์ฟ ํค์ ๋ถ์ฌ๋ ์ด๋ฆ๊ณผ ๊ฐ(ํ์) |
Expires=DATE | ์ฟ ๊ธฐ ์ ํจ ๊ธฐํ (์ง์ ๋์ง ์์ ๊ฒฝ์ฐ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์ ๋๊น์ง) |
Path=PATH | ์ฟ ํค ์ ์ฉ ๋์์ด ๋๋ ์๋ฒ ์์ ๋๋ ํ ๋ฆฌ (์ง์ ํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ํ๋จผํธ์ ๊ฐ์ ๋๋ ํ ๋ฆฌ) |
Domain=๋๋ฉ์ธ ๋ช | ์ฟ ํค ์ ์ฉ ๋์์ด ๋๋ ๋๋ฉ์ธ ๋ช
(์ง์ ํ์ง ์์ ๊ฒฝ์ฐ๋ ์ฟ ํค๋ฅผ ์์ฑํ ์๋ฒ์ ๋๋ฉ์ธ) |
Secure | HTTPS๋ก ํต์ ํ๊ณ ์๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๋ฅผ ์ก์ |
HttpOnly | ์ฟ ํค๋ฅผ JavaScript(์๋ฐ์คํฌ๋ฆฝํธ)์์ ์ก์ธ์คํ์ง ๋ชปํ๋๋ก ์ ํ |
1) Expires ์์ฑ
- ์ฟ ํค์ Expires ์์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ก์ถํ ์ ์๋ ์ ํจ ๊ธฐํ์ ์ ์ ํ ์ ์์
- Expires ์์ฑ์ ์๋ตํ ๊ฒฝ์ฐ์๋ ๋ธ๋ผ์ฐ์ ์ธ์
์ด ์ ์ง๋๊ณ ์๋ ๋์๋ง ์ ํจํ๊ฒ ๋จ
- ์ด๊ฒ์ ํต์์ ๋ธ๋ผ์ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ซ์ ๋๊น์ง
- ํ๋ฒ ์๋ฒ์ ์ก์ถํ ํด๋ผ์ ์ฟ ํค๋ ์๋ฒ์์ ๋ช ์์ ์ผ๋ก ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์์
- ์ ํจ ๊ธฐํ์ด ์ง๋ฌ๋ค๋ฉด ์ฟ ํค๋ฅผ ๋ฎ์ด ์ฐ๋ ๊ฒ์ผ๋ก ์ค์ง์ ์ผ๋ก ํด๋ผ ์ธก์ ์ฟ ํค๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅ
2) Path ์์ฑ
- ์ฟ ํค์ path ์์ฑ์ ์ฟ ํค๋ฅผ ์ก์ถํ๋ ๋ฒ์๋ฅผ ํน์ ๋๋ ํ ๋ฆฌ์ ํ์ ํ ์ ์์
- ์ด ์ง์ ์ ํผํ๋ ๋ฐฉ๋ฒ์ด ์์ด์ ๋ณด์ ํจ๊ณผ๋ ๊ธฐ๋ํ ์ ์์
3) Domain ์์ฑ
- ์ฟ ํค์ domain ์์ฑ์ ์ํด์ ์ง์ ๋ ๋๋ฉ์ธ ๋ช
์ ํ๋ฐฉ ์ผ์น๊ฐ ๋จ
- ex) โexample.comโ๋ก ์ง์ ํ์ ๋ โexample.comโ ์ด์ธ์ โwww.example.comโ๊ณผ โwww2.example.comโ ๋ฑ์์๋ ์ฟ ํค๊ฐ ์ก์ถ๋จ
- ๋ช ์์ ์ผ๋ก ์ฌ๋ฌ ๋๋ฉ์ธ์ ๋ํด์ ์ฟ ํค๋ฅผ ์ก์ถํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ domain ์์ฑ์ ์ง์ ํ์ง ์๋ ์ชฝ์ด ์์ ํจ
4) Secure ์์ฑ
- ์น ํ์ด์ง๊ฐ HTTPS์์ ์ด๋ ธ์ ๋์๋ง ์ฟ ํค ์ก์ถ์ ์ ํํ๊ธฐ ์ํด์ ์ง์ ํจ
Set-Cookie: name=value; secure
- ์์ ๊ฒฝ์ฐ โhttps://www.example.com/(HTTPS)โ์ผ ๋๋ง ์ฟ ํค ๋ฐ์์ ํจ
- ๋๋ฉ์ธ์ด ๊ฐ๋๋ผ๋ โhttp://www.example.com/(HTTP)โ์๋ ์ฟ ํค ๋ฐ์ก์ ํ์ง ์์
- secure ์์ฑ์ ์๋ตํ๋ ๊ฒฝ์ฐ์๋ HTTP์ HTTPS์์๋ ์ฟ ํค๋ฅผ ๋ฐ์กํจ
5) HttpOnly ์์ฑ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒฝ์ ํด์ ์ฟ ํค๋ฅผ ์ทจ๋ํ์ง ๋ชปํ๋๋ก ํ๋ ์ฟ ํค์ ํ์ฅ ๊ธฐ๋ฅ์
- ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS)์ผ๋ก๋ถํฐ ์ฟ ํค์ ๋์ฒญ์ ๋ง๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํจ
Set-Cookie: name=value; HttpOnly
- ์์ ๊ฒฝ์ฐ, ํต์ ์น ํ์ด์ง ๋ด์์๋ ์ฟ ํค๋ฅผ ์ฝ์ด ๋ค์ด๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง HttpOnly ์์ฑ์ด ๋ถ์ฌ๋ ์ฟ ํค๋ Javascript์ [document.cookie]์์๋ ์ฝ์ด๋ค์ผ ์ ์๊ฒ๋จ
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ XSS์์ Javascript๋ฅผ ์ด์ฉํด ์ฟ ํค๋ฅผ ํ์น ์ ์์
- ๋ ์์ ์ผ๋ก ํ์ฅํ ๊ธฐ๋ฅ์ด์ง๋ง ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ 6 SP1 ์ด์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋น๋กฏํ ํ์ฌ ์ฃผ์ํ ๋ธ๋ผ์ฐ์ ์์๋ ๊ฑฐ์ ๋ชจ๋ ๋์ํ๊ณ ์์
- XSS ์์ฒด๋ฅผ ๋ง๋ ๊ฒ์ ์๋
Cookie
Cookie: status=enable
- ํด๋ผ๊ฐ HTTP์ ์ํ ๊ด๋ฆฌ ์ง์์ ์ํ ๋ ์๋ฒ๋ก๋ถํฐ ์์ ํ ์ฟ ํค๋ฅผ ์ดํ์ ๋ฆฌํ์คํธ์ ํฌํจํด์ ์ ๋ฌํจ
- ์ฟ ํค๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ ํ๊ณ ์์ ๋์๋ ์ฟ ํค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ณด๋ด๋ ๊ฒ๋ ๊ฐ๋ฅ
6-8. ๊ทธ ์ด์ธ์ ํค๋ ํ๋
- HTTP ํค๋ ํ๋๋ ๋
์์ ์ผ๋ก ํ์ฅํ ์ ์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์น ์๋ฒ์ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ฅ์ ๋ค์ํ ๋ ์์ ์ธ ํค๋ ํ๋๊ฐ ์กด์ฌํจ
์์ฃผ ์ฌ์ฉ๋๋ ํค๋ ํ๋
- X-Frame-Option
- X-XSS-Protection
- DNT
- P3P
1) X-Frame-Option
X-Frame-Option: DENY
- ๋ค๋ฅธ ์น ์ฌ์ดํธ์ ํ๋ ์์์ ํ์๋ฅผ ์ ์ดํ๋ HTTP ๋ฆฌ์คํฐ์ค ํค๋๋ก, ํด๋ฆญ ์ฌํน(click jacking)์ด๋ผ๋ ๊ณต๊ฒฉ์ ๋ง๋ ๊ฒ์๋ชฉ์ ์ผ๋ก ํจ
X-Frame-Option ํค๋ ํ๋์ ์ง์ ํ ์ ์๋ ๊ฐ
- DENY : ๊ฑฐ๋ถ
-
SAMEORIGIN : Top-level-browsing-context๊ฐ ์ผ์นํ ๊ฒฝ์ฐ์๋ง ํ๊ฐ
- X-Frame-Option๋ ๋ชจ๋ ์น ์๋ฒ์์ ์ค์ ํด๋๋ ๊ฒ์ด ๋ฐ๋์งํจ
<IfModule mod_headers.c>
Header append X-FRAME-OPTIONS"SAMEORIGIN"
<IfModule>
X-XSS-Protection
X-XSS-Protection: 1
- ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๋์ฑ ์ผ๋ก์ ๋ธ๋ผ์ฐ์ ์ XSS ๋ณดํธ ๊ธฐ๋ฅ์ ์ ์ดํ๋ HTTP ๋ฆฌ์คํฐ์ค ํค๋ ์
X-XSS-Protection ํค๋ ํ๋์ ์ง์ ํ ์ ์๋ ๊ฐ
- 0 : XSS ํํฐ๋ฅผ ๋ฌดํจ๋ก ํจ
- 1 : XSS ํํฐ๋ฅผ ์ ํจ๋ก ํจ
DNT
DNT: 1
- Do No Track(DNT)๋ผ๋ ๋ป์ด๋ฉฐ ๊ฐ์ธ ์ ๋ณด ์์ง์ ๊ฑฐ๋ถํ๋ ์์ฌ๋ฅผ ๋ํ๋ด๋ HTTP ๋ฆฌํ์คํธ ํค๋์
- ํ๊น ๊ด๊ณ ๋ฑ์ ์ด์ฉ๋๋ ํธ๋ํน์ ๊ฑฐ๋ถ ์์ฌ๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋
DNT ํค๋ ํ๋๋์ ์ง์ ํ ์ ์๋ ๊ฐ
- 0 : ํธ๋ํน ๋์
-
1 : ํธ๋ํน ๊ฑฐ๋ถ
- DNT ํค๋ ํ๋์ ๊ธฐ๋ฅ์ด ์ ํจ์ฑ์ ์ ์งํ๊ธฐ ์ํด์๋ ์น ์๋ฒ์์ DNT๋ฅผ ์ง์ํด์ผ ํ ํ์๊ฐ ์์
P3P
P3P: CP="CAO DSP LAW CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT"
- ์น ์ฌ์ดํธ ์์ ํ๋ผ๋ฒ์ ์ ์ฑ ์ P3P(The Platform for Privacy Preferences)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์ฝ์ ์ ์๋ ํํ๋ก ๋ํ๋ด๊ธฐ ์ํ HTTP ๋ฆฌ์คํฐ์ค ํค๋์
P3P ์ค์ ์์
- ์์-1 : P3P ์ ์ฑ ์์ฑ
- ์์-2 : P3P ์ ์ฑ ์ฐธ์กฐ ํ์ผ์ ์์ฑํด์ โ/w3c/p3p.xmlโ์ ๋ฐฐ์น
- ์์-3 : P3P ์ ์ฑ ์ผ๋ก๋ถํฐ ์ฝคํฉํธ ์ ์ฑ ์ ์์ฑํ๊ณ HTTP ๋ฆฌ์คํฐ์ค ํค๋์ ์ถ๋ ฅ
reference
๊ทธ๋ฆผ์ผ๋ก ๋ฐฐ์ฐ๋ HTTP & Network Basic
MDN Web Docs-HTTP