HTTP ๋ฉ”์†Œ๋“œ

  • ์ข…๋ฅ˜

GET

  • ์š”์ฒญ์ด ์บ์‹œ๋œ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €, ๋กœ๋ด‡์ด ์ž„์˜๋กœ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Conditional GET

  • ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ „์— ํ•œ๋ฒˆ ์š”์ฒญํ•ด์„œ ๋Œ๋ ค๋ฐ›์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๋‹ค์‹œํ•œ๋ฒˆ ์š”์ฒญ์„ ํ•  ๋•Œ, ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค์‹œ ๋ณด๋‚ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋ชจ๋“  ์š”์ฒญ์ด ์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๋‹ค.

  • ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์›น ํŽ˜์ด์ง€ ์ ‘๊ทผ ํ›„, ๋‹ค์‹œ ๊ฐ™์€ ํŽ˜์ด์ง€ ์ ‘๊ทผํ–ˆ์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ๊ทธ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๋‚ญ๋น„์ด์ง€ ์•Š๋‚˜?

    • ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ ๋ณ€๊ฒฝ์ด ์—†๋‹ค๋ฉด, ํŽ˜์ด์ง€ ๋‚ด์šฉ ์ „์†ก์€ ํ•„์š”์—†์ง€ ์•Š์„๊นŒ?

    • ์ด๋Ÿฐ ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค๋ฉด ๋ฌด์—‡์„ ๊ธฐ์–ตํ•ด๋‘์–ด์•ผ ํ• ๊นŒ?

    • ์–ธ์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•ด์„œ ๋ฐ›์•˜๋Š”์ง€ (Timestamp)

    • ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์œ ํšจ์‹œ๊ฐ„

    • ์–ด๋–ค ๋ฆฌ์†Œ์Šค์— ํ™œ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ?
      • ์ด๋ฏธ์ง€, js, css
      • Timestamp, validtime ํ•จ๊ป˜
      • HTML (X)
        • ์กฐ๊ธˆ๋งŒ ๋ณ€๊ฒฝ๋˜๋„ ๋‹ค๋ฅธ ์ž์›์„ ๋ฐ›๋„๋ก ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ
      • User ์ •๋ณด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ
        • ์• ๋งคํ•จ

    ๋ฌธ๋ฒ•

  • Last-Modified: HTTP-Date

    • ์‘๋‹ต ํ—ค๋”
    • Last-Modified๋Š” Date๋ณด๋‹ค ์ดํ›„์—ฌ์„œ๋Š” ์•ˆ๋œ๋‹ค(Must Not)
    • ๋ฏธ๋ž˜์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ฌ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊นŒ
  • expires

  • age

  • cache-control

  • If-Modified-Since: HTTP-Date

    • ์š”์ฒญ ํ—ค๋”

    • ๋งŒ์•ฝ ํ•ด๋‹น Date๋ณด๋‹ค Modified๊ฐ€ ์ดํ›„๋ผ๋ฉด (ํ•ด๋‹น ์š”์ฒญ์‹œ์ ์ดํ›„์— ์ˆ˜์ •๋˜์—ˆ๋‹ค๋ฉด)

    • 200 OK

    • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด

    • 304 Not Modified

    • Body๊ฐ€ ์—†๋‹ค.

    • Etag
      • ์ž์›์˜ ์ˆ˜์ •์ด ๊ฐ€ํ•ด์กŒ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด
      • Weak eTag (W/โ€syzzyโ€)
        • ๋ฆฌ์†Œ์Šค์— ์˜๋ฏธ์žˆ๋Š” ์ˆ˜์ค€์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ”๋€Œ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ
      • String eTag (โ€œxyzzyโ€)
        • ๋ฆฌ์†Œ์Šค๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ๋ณ€ํ•˜๋ฉด ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค.
      • ๋ฌธ๋ฒ•
        • ์š”์ฒญ ํ—ค๋”
          • If-None-Match: a6f305a
        • ์‘๋‹ต ํ—ค๋”
          • ETag: a8g943l

    POST

  • ์ƒ์„ฑ

  • ์ƒ์„ฑ์ž‘์—…์„ GET์œผ๋กœ ๋ณด๋‚ผ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ •๋ณด๊ฐ€ ์บ์‹œ๋˜๊ณ  (๋ณด์•ˆ์ ์œผ๋กœ ๋‚˜์จ), ๋กœ๋ด‡์˜ ์ž„์˜ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š๋‹ค.

    PUT

  • POST์™€์˜ ์ฐจ์ด

    • ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
  • ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ๋Œ€์ฒด(์ „์ฒด) ํ•  ๋•Œ ์‚ฌ์šฉ

  • ์ „์ฒด ์—…๋ฐ์ดํŠธ

PATCH

  • ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
  • ๋ถ€๋ถ„์ ์ธ ์—…๋ฐ์ดํŠธ

DELETE

  • ๋ฆฌ์†Œ์Šค ์‚ญ์ œ ์š”์ฒญ

OPTIONS

  • ์–ด๋– ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์–ด๋–ค ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜์ ธ๋ณผ ๋•Œ ์‚ฌ์šฉ
  • Allow๋ผ๋Š” header๋กœ OPTIONS, GET, HEAD ์ด๋Ÿฐ์‹์œผ๋กœ ์•Œ๋ ค์คŒ
  • Body๋Š” ์—†๊ณ  HEAD๋งŒ ์˜ค๋Š” ์š”์ฒญ

TRACE

  • ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ”„๋ก์‹œ๋ฅผ ํƒ€๊ณ  ๊ฐ”๋Š”์ง€ ๋ณด์—ฌ์คŒ

CONNECT

  • SSL ํ„ฐ๋„๋ง ๋“ฑ ํŠน์ˆ˜ ์šฉ๋„์— ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ

Attributes

  • ๋ฉฑ๋“ฑ์„ฑ
    • ์—ฌ๋Ÿฌ๋ฒˆ ์š”์ฒญํ•ด๋„ ํšจ๊ณผ๋Š” ํ•œ๋ฒˆ ์š”์ฒญํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Œ
  • ์•ˆ์ „์„ฑ
    • ์—ฌ๋Ÿฌ๋ฒˆ ์š”์ฒญ ๊ฑธ์–ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ
    • GET, HEAD์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์†Œ์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „
    • ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ Non Safe Method

Summary

|Method|์•ˆ์ „์„ฑ|๋ฉฑ๊ธ‰์„ฑ|ํŠน์ง•| |:----:|:-:------|:-:------|:-----| |GET|O|O|| |POST|X|X|์ƒ์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฑ๊ธ‰์„ฑ์„ ๋งŒ์กฑํ•˜๊ธฐ ๋ชปํ•จ| |PUT|X|O|์ •๋ณด๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ ๊ฐ€๋Šฅ, ๊ทธ๋ ‡์ง€๋งŒ ์ „์ฒด๋ฅผ ๋ณด๋‚ด์•ผ ํ•จ, ์ „์ฒด๋ฅผ ํ•ญ์ƒ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฑ๊ธ‰์„ฑ ๋งŒ์กฑ| |PATCH|X|X|์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์ •, ๋ฆฌ์†Œ์Šค์˜ ๋‚ด์šฉ์ด ์–ด๋– ๋ƒ์— ๋”ฐ๋ผ ๋ถ€๋ถ„์  ๊ฒฐ๊ณผ๋งŒ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†์Œ| |HEAD|||GET ์š”์ฒญ์‹œ ์–ด๋–ค ํ—ค๋”๋“ค์„ ๋ฐ›๋Š”์ง€ ์•Œ๋ ค์คŒ (GET๊ณผ ๊ฐ™์œผ๋‚˜ ๋ณธ๋ฌธ ์—†์Œ)| |TRACE|||์š”์ฒญ์ด ์„œ๋ฒ„์— ๋“ค๋ €๋‹ค๊ฐ€ ์‘๋‹ต ๋ฐ˜ํ™˜๊นŒ์ง€ ๊ฑฐ์น˜๋Š” ํ”„๋ก์‹œ๋ฅผ ์•Œ๋ ค์คŒ| |OPTIONS|||ํŠน์ • URL์— ๋Œ€ํ•œ ์˜ต์…˜๋“ค์„ ์•Œ๋ ค์คŒ, ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ ๋ฐ˜ํ™˜| |DELETE|X|O|์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œ, ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฑ๊ธ‰์„ฑ ๋งŒ์กฑ|