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 ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ๋ฌด์‹œ๋จ

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๋ผ๊ณ  ์ง€์ •ํ•ด์•ผ ํ•จ
// ๋ฆฌํ€˜์ŠคํŠธ
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)๋ฅผ ์‚ฌ์šฉํ•จ
  • 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: 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: 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