๐Ÿ’กHTTP์™€ HTTPS๋ฅผ ํ•™์Šตํ•ด ๋ณด์ž

-ยท2022๋…„ 1์›” 14์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
3/12

HTTP์™€ HTTPS

HTTP

  • Hyper Text Transfer Protocol
  • ์›น ์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— request/response๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ
  • TCP/UDP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, 80๋ฒˆ ํฌํŠธ ์‚ฌ์šฉ.

HTTPS

  • Hyper Text Transfer Protocol over Secure Socket Layer
  • ์›น ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ธ HTTP์˜ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ๋ฒ„์ „์˜ ํ”„๋กœํ† ์ฝœ
  • TCP/IP์˜ ํฌํŠธ๋กœ 443๋ฒˆ ํฌํŠธ ์‚ฌ์šฉ.
  • ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์—ด๋žŒ, ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜๋‹ค.
  • ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๊ณผ์ •์ด ์›น ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ์ค€๋‹ค.
  • HTTPS๋Š” ์„ค์น˜ ๋ฐ ์ธ์ฆ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š”๋ฐ ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.
  • HTTP์— ๋น„ํ•ด ๋Š๋ฆฌ๋‹ค.

HTTPS๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • ํด๋ผ์ด์–ธํŠธ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— HTTP๋ฅผ ํ†ตํ•ด ์›น ํŽ˜์ด์ง€๋‚˜ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ด ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณต. ์ด๋•Œ ์›น ํŽ˜์ด์ง€(HTML)๋Š” ํ…์ŠคํŠธ์ด๊ณ , HTTP๋ฅผ ํ†ตํ•ด ์ด๋Ÿฐ ํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ฃผ๊ณ ๋ฐ›๋Š” ํ…์ŠคํŠธ ์ •๋ณด์— ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์ด ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ƒํƒœ์—์„œ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ค‘๊ฐ„์— ์ œ3์ž๊ฐ€ ์ •๋ณด๋ฅผ ๊ฐ€๋กœ์ฑˆ๋‹ค๋ฉด ๋ณด์•ˆ์ƒ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ์ฆ‰, ์ค‘๊ฐ„์—์„œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์—†๋„๋ก ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

HTTPS ๋™์ž‘ ๋ฐฉ๋ฒ•

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(A)๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ์—…์€ HTTPS๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA ๊ธฐ์—…์„ ์„ ํƒํ•˜๊ณ , ๊ทธ ๊ธฐ์—…์—๊ฒŒ ๋‚ด ๊ณต๊ฐœํ‚ค ๊ด€๋ฆฌ๋ฅผ ๋ถ€ํƒํ•˜๋ฉฐ ๊ณ„์•ฝ์„ ํ•œ๋‹ค.

    CA๋ž€? : Certificate Authority๋กœ, ๊ณต๊ฐœํ‚ค๋ฅผ ์ €์žฅํ•ด์ฃผ๋Š” ์‹ ๋ขฐ์„ฑ์ด ๊ฒ€์ฆ๋œ ๋ฏผ๊ฐ„๊ธฐ์—…
    ๊ณ„์•ฝ ์™„๋ฃŒ๋œ CA ๊ธฐ์—…์€ ํ•ด๋‹น ๊ธฐ์—…์˜ ์ด๋ฆ„, A์„œ๋ฒ„ ๊ณต๊ฐœํ‚ค, ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ๋‹ด์€ ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ์ธ์ฆ์„œ๋ฅผ CA ๊ธฐ์—…์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ A์„œ๋ฒ„์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

  • A์„œ๋ฒ„๋Š” ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด์ œ A์„œ๋ฒ„๋Š” A์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ HTTPS ์š”์ฒญ์ด ์•„๋‹Œ ์š”์ฒญ์ด ์˜ค๋ฉด, ์ด ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฑด๋‚ด์ค€๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” main.html ํŒŒ์ผ์„ ๋‹ฌ๋ผ๊ณ  A์„œ๋ฒ„์— ์š”์ฒญํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. HTTPS ์š”์ฒญ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— CA๊ธฐ์—…์ด A์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ CA ๊ธฐ์—…์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
  • CA ๊ธฐ์—…์˜ ๊ณต๊ฐœํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฏธ ์•Œ๊ณ ์žˆ๋‹ค. (์„ธ๊ณ„์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์—…์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ธ์ฆ์„œ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋…์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ)
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋…ํ•œ ๋’ค A์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์–ป๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด์ œ A์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ๋Œ€๋Š” ์–ป์€ A์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ์š”์ฒญ์„ ๋‚ ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  • HTTPS๋„ ๋ฌด์กฐ๊ฑด ์•ˆ์ „ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. (์‹ ๋ขฐ๋ฐ›๋Š” CA ๊ธฐ์—…์ด ์•„๋‹Œ ์ž์ฒด ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ํ•œ ๊ฒฝ์šฐ ๋“ฑ)
  • ์ด๋•Œ๋Š” HTTPS์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ์˜ ์š”ํ•จ, ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์ดํŠธ์™€ ๊ฐ™์€ ์•Œ๋ฆผ์œผ๋กœ ์ฃผ์˜ ๋ฐ›๊ฒŒ ๋œ๋‹ค.

HTTP ํ—ค๋”

General Header

  • request, response์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ผ๋ฐ˜ ๋ชฉ์ ์˜ ํ—ค๋”.

์ฃผ์š” ํ•ญ๋ชฉ๋“ค

  • Date: HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ ์ผ์‹œ (RFC 1123์—์„œ ๊ทœ์ •)
  • Connection: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์˜ต์…˜ ์„ค์ •(๋‹ค์†Œ ๋ชจํ˜ธํ•œ ๋ณต์žก์„ฑ ์žˆ์Œ)
    • Connection: close, ํ˜„์žฌ HTTP ๋ฉ”์‹œ์ง€ ์งํ›„์— TCP ์ ‘์†์„ ๋Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆผ
    • Connection: Keep-Alive, ํ˜„์žฌ TCP ์ปค๋„ฅ์…˜์„ ์œ ์ง€
  • Cache-Control: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์บ์‹œ ๊ด€๋ฆฌ, ๋ณดํ†ต GET ์š”์ฒญ์—๋งŒ ์‚ฌ์šฉ.
    • Cache-Control: no-store, ์•„๋ฌด๊ฒƒ๋„ ์บ์‹ฑํ•˜์ง€ ์•Š์Œ.
    • Cache-Control: no-cache, ๋ชจ๋“  ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์„œ๋ฒ„์— ํŒ๋‹จ์„ ์š”์ฒญ.
    • Cache-Control: must-revalidate, ๋งŒ๋ฃŒ๋œ ์บ์‹œ๋งŒ ์„œ๋ฒ„์— ํŒ๋‹จ์„ ์š”์ฒญ.
  • Pragma: HTTP/1.1 ๋ฒ„์ „์˜ Cache-Control ํ—ค๋”๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์ „ ๊ทธ๊ฒƒ๊ณผ ๋™์ผํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๋Œ€์šฉ ํ—ค๋”.
  • Trailer: Trailer ํ—ค๋”๋Š” ์ˆ˜์‹ ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์–ด๋– ํ•œ HTTP ํ—ค๋”๊ฐ€ Chunked ๋ฐฉ์‹์˜ ํŠธ๋ ˆ์ผ๋Ÿฌ๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ์ง€๋ฅผ ์•Œ๊ฒŒ ํ•ด์ฃผ๋Š” ํ—ค๋”

Entity Header

  • request, response์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Entity(์ฝ˜ํ…์ธ , ๋ณธ๋ฌธ, ๋ฆฌ์†Œ์Šค ๋“ฑ)์— ๋Œ€ํ•œ ์„ค๋ช… ํ—ค๋”.

์ฃผ์š” ํ•ญ๋ชฉ๋“ค

  • Content-Type: ํ•ด๋‹น ๊ฐœ์ฒด์— ํฌํ•จ๋˜๋Š” ๋ฏธ๋””์–ด ํƒ€์ž… ์ •๋ณด
    • ์ปจํ…์ธ ์˜ ํƒ€์ž…(MIME ๋ฏธ๋””์–ด ํƒ€์ž…) ๋ฐ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹(EUC-KR,UTF-8 ๋“ฑ)์„ ์ง€์ •
    • ํƒ€์ž… ๋ฐ ์„œ๋ธŒํƒ€์ž…(type/subtype)์œผ๋กœ ๊ตฌ์„ฑ
    • Content-Type: text/html; charset-latin-1 => ํ•ด๋‹น ๊ฐœ์ฒด๊ฐ€ html์œผ๋กœ ํ‘œํ˜„๋œ ํ…์ŠคํŠธ ๋ฌธ์„œ์ด๊ณ , iso-latin-1 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„๋จ
  • Content-Language: ํ•ด๋‹น ๊ฐœ์ฒด์™€ ๊ฐ€์žฅ ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž ์–ธ์–ด(์ž์—ฐ์–ธ์–ด)
  • Content-Encoding: ํ•ด๋‹น ๊ฐœ์ฒด ๋ฐ์ดํ„ฐ์˜ ์••์ถ• ๋ฐฉ์‹
    • Content-Encoding: gzip, deflate
    • ๋งŒ์ผ ์••์ถ•์ด ์‹œํ–‰๋˜์—ˆ๋‹ค๋ฉด, Content-Encoding ๋ฐ Content-Length 2๊ฐœ ํ•ญ๋ชฉ์„ ํ† ๋Œ€๋กœ ์••์ถ• ํ•ด์ œ ๊ฐ€๋Šฅ
  • Content-Length: ์ „๋‹ฌ๋˜๋Š” ํ•ด๋‹น ๊ฐœ์ฒด์˜ ๋ฐ”์ดํŠธ ๊ธธ์ด ๋˜๋Š” ํฌ๊ธฐ(10์ง„์ˆ˜)
    • ์‘๋‹ต ๋ฉ”์‹œ์ง€ Body์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์ง€์ •๋œ ๊ฐœ์ฒด์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•จ
  • Content-Location: ํ•ด๋‹น ๊ฐœ์ฒด๊ฐ€ ์‹ค์ œ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”๊ฐ€๋ฅผ ์•Œ๋ ค์คŒ
  • Content-Disposition: ์‘๋‹ต Body๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•ด์•ผ ํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ํ—ค๋”
    • inline์ธ ๊ฒฝ์šฐ ์›นํŽ˜์ด์ง€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ณ , attachment์ธ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œ
    • Content-Disposition: inline
    • Content-Disposition: attachment; filename='filename.csv'
    • ๋‹ค์šด๋กœ๋“œ๋˜๊ธธ ์›ํ•˜๋Š” ํŒŒ์ผ์€ attachment๋กœ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , filename ์˜ต์…˜์œผ๋กœ ํŒŒ์ผ๋ช…๊นŒ์ง€ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
    • ํŒŒ์ผ์šฉ ์„œ๋ฒ„์ธ ๊ฒฝ์šฐ ์ด ํƒœ๊ทธ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉ
  • Content-Security-Policy: ๋‹ค๋ฅธ ์™ธ๋ถ€ ํŒŒ์ผ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ, ์ฐจ๋‹จํ•  ์†Œ์Šค์™€ ๋ถˆ๋Ÿฌ์˜ฌ ์†Œ์Šค๋ฅผ ๋ช…์‹œ
    • XSS ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ฐฉ์–ด ๊ฐ€๋Šฅ (ํ—ˆ์šฉํ•œ ์™ธ๋ถ€ ์†Œ์Šค๋งŒ ์ง€์ • ๊ฐ€๋Šฅ)
    • Content-Security-Policy: default-src https;://example.com, https๋ฅผ ํ†ตํ•ด์„œ๋งŒ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ด
    • Content-Security-Policy: default-src 'self', ์ž์‹ ์˜ ๋„๋ฉ”์ธ์˜ ํŒŒ์ผ๋“ค๋งŒ ๊ฐ€์ ธ์˜ด
    • Content-Security-Policy: default-src 'none', ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Œ
  • Location: ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ(redirect)๋œ ๋•Œ์— ์ด๋™๋œ ์ฃผ์†Œ, ๋˜๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค ์ฃผ์†Œ
    • 300๋ฒˆ๋Œ€ ์‘๋‹ต์ด๋‚˜ 201 Created ์‘๋‹ต์ผ ๋•Œ ์–ด๋Š ํŽ˜์ด์ง€๋กœ ์ด๋™ํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ํ—ค๋”
    • ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ์— HTTP ์ƒํƒœ ์ฝ”๋“œ 201 Created๊ฐ€ ๋ฐ˜ํ™˜๋จ
    • HTTP/1.1 302 Found Location: /
      • ์ด๋Ÿฐ ์‘๋‹ต์ด ์™”๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” / ์ฃผ์†Œ๋กœ redirectํ•œ๋‹ค.
  • Last-Modified: ๋ฆฌ์†Œ์Šค๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐฑ์‹ ํ•œ ์ผ์‹œ

Request Header

  • ์š”์ฒญ ํ—ค๋”๋Š” HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€ ๋‚ด์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋ฉฐ ๊ฐ€์žฅ ๋ฐฉ๋Œ€ํ•จ.

์ฃผ์š” ํ•ญ๋ชฉ๋“ค

  • Host: ์š”์ฒญํ•˜๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ํ˜ธ์ŠคํŠธ๋ช… ๋ฐ ํฌํŠธ๋ฒˆํ˜ธ (ํ•„์ˆ˜)
    • Host ํ•„๋“œ์— ๋„๋ฉ”์ธ๋ช… ๋ฐ ํ˜ธ์ŠคํŠธ๋ช… ๋ชจ๋‘๋ฅผ ํฌํ•จํ•œ ์ „์ฒด URI(FQDN) ์ง€์ • ํ•„์š”
    • ์ด์— ๋”ฐ๋ผ ๋™์ผ IP ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” ๋‹จ์ผ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ๊ฐ€ ๊ตฌ์ถ• ๊ฐ€๋Šฅ
  • User-Agent: ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด(๋ธŒ๋ผ์šฐ์ €, OS) ๋ช…์นญ ๋ฐ ๋ฒ„์ „ ์ •๋ณด
  • From: ํด๋ผ์ด์–ธํŠธ ์‚ฌ์šฉ์ž ๋ฉ”์ผ ์ฃผ์†Œ
    • ์ฃผ๋กœ ๊ฒ€์ƒ‰์—”์ง„ ์›น ๋กœ๋ด‡์˜ ์—ฐ๋ฝ์ฒ˜ ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ๋•Œ๋กœ๋Š”, ์ด ์—ฐ๋ฝ์ฒ˜ ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ User-Agent ํ•ญ๋ชฉ์— ๋‘๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ
  • Cookie: ์„œ๋ฒ„์— ์˜ํ•ด Set-Cookie๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„ค์ •๋œ ์ฟ ํ‚ค ์ •๋ณด
  • Referer: ๋ฐ”๋กœ ์ง์ „์— ๋จธ๋ฌผ์—ˆ๋˜ ์›น ๋งํฌ ์ฃผ์†Œ
  • If-Modified-Since: ์ œ์‹œํ•œ ์ผ์‹œ ์ดํ›„๋กœ๋งŒ ๋ณ€๊ฒฝ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ทจ๋“ ์š”์ฒญ
  • Authorization: ์ธ์ฆ ํ† ํฐ(JWT/Bearer ํ† ํฐ)์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ—ค๋”
    • ํ† ํฐ์˜ ์ข…๋ฅ˜(Basic, Bearer ๋“ฑ) + ์‹ค์ œ ํ† ํฐ ๋ฌธ์ž๋ฅผ ์ „์†ก
  • Origin
    • ์„œ๋ฒ„๋กœ POST ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ์š”์ฒญ์ด ์–ด๋Š ์ฃผ์†Œ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๋‚˜ํƒ€๋ƒ„
    • ์—ฌ๊ธฐ์„œ ์š”์ฒญ์„ ๋ณด๋‚ธ ์ฃผ์†Œ์™€ ๋ฐ›๋Š” ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๋ฉด CORS ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
    • ์‘๋‹ต ํ—ค๋”์˜ Access-Control-Allow-Origin์™€ ๊ด€๋ จ
  • ๋‹ค์Œ 4๊ฐœ๋Š” ์ฃผ๋กœ HTTP ๋ฉ”์„ธ์ง€ Body์˜ ์†์„ฑ ๋˜๋Š” ๋‚ด์šฉ ํ˜‘์ƒ์šฉ ํ•ญ๋ชฉ๋“ค
    • Accept: ํด๋ผ์ด์–ธํŠธ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ฏธ๋””์–ด ํƒ€์ž… ๋ฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์•Œ๋ฆผ
      • Accept: / => ์–ด๋–ค ๋ฏธ๋””์–ด ํƒ€์ž…๋„ ๊ฐ€๋Šฅ
      • Accept: image/* => ๋ชจ๋“  ์ด๋ฏธ์ง€ ์œ ํ˜•
  • Accept-Charset: ํด๋ผ์ด์–ธํŠธ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ
  • Accept-Encoding: ํด๋ผ์ด์–ธํŠธ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹
  • Accept-Language: ํด๋ผ์ด์–ธํŠธ ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฐ€๋Šฅํ•œ ์–ธ์–ด
  • ๊ฐ๊ฐ์ด HTTP Entity Header ํ•ญ๋ชฉ ์ค‘์— Content-Type, Content-Type charset-xxx, Content-Encoding, Content-Language๊ณผ ์ผ๋Œ€์ผ๋กœ ๋Œ€์‘๋จ

Response Header

  • ํŠน์ • ์œ ํ˜•์˜ HTTP ์š”์ฒญ์ด๋‚˜ ํŠน์ • HTTP ํ—ค๋”๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ, ์ด์— ์‘๋‹ตํ•˜๋Š” ํ—ค๋”.

์ฃผ์š” ํ•ญ๋ชฉ๋“ค

  • Server: ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด ์ •๋ณด
  • Accept-Range
  • Set-Cookie: ์„œ๋ฒ„์ธก์—์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„ธ์…˜ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์„ค์ • (RFC 2965์—์„œ ๊ทœ์ •)
  • Expires: ๋ฆฌ์†Œ์Šค๊ฐ€ ์ง€์ •๋œ ์ผ์‹œ๊นŒ์ง€ ์บ์‹œ๋กœ์จ ์œ ํšจํ•จ
  • Age: ์บ์‹œ ์‘๋‹ต. max-age ์‹œ๊ฐ„ ๋‚ด์—์„œ ์–ผ๋งˆ๋‚˜ ํ˜๋ €๋Š”์ง€ ์•Œ๋ ค์คŒ(์ดˆ ๋‹จ์œ„)
  • ETag: HTTP ์ปจํ…์ธ ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ
  • Proxy-authenticate
  • Allow: ํ•ด๋‹น ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•ด ์„œ๋ฒ„ ์ธก์—์„œ ์ง€์› ๊ฐ€๋Šฅํ•œ HTTP ๋ฉ”์†Œ๋“œ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ๋•Œ๋ก , HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€์˜ HTTP ๋ฉ”์†Œ๋“œ OPTIONS์— ๋Œ€ํ•œ ์‘๋‹ต์šฉ ํ•ญ๋ชฉ
      • OPTIONS: ์›น์„œ๋ฒ„์ธก ์ œ๊ณต HTTP ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์งˆ์˜
    • Allow: GET,HEAD => ์›น ์„œ๋ฒ„์ธก์ด ์ œ๊ณต ๊ฐ€๋Šฅํ•œ HTTP ๋ฉ”์„œ๋“œ๋Š” GET,HEAD ๋ฟ์ž„์„ ์•Œ๋ฆผ (405 Method Not Allowed ์—๋Ÿฌ์™€ ํ•จ๊ป˜)
  • Access-Control-Allow-Origin: ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํ”„๋ก ํŠธ ์ฃผ์†Œ์™€ ๋ฐ›๋Š” ๋ฐฑ์—”๋“œ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๋ฉด CORS ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
    • ์„œ๋ฒ„์—์„œ ์ด ํ—ค๋”์— ํ”„๋ก ํŠธ ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ์–ด์•ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.
    • Access-Control-Allow-Origin: www.example.com
      • ํ”„๋กœํ† ์ฝœ, ์„œ๋ธŒ๋„๋ฉ”์ธ, ๋„๋ฉ”์ธ, ํฌํŠธ ์ค‘ ํ•˜๋‚˜๋งŒ ๋‹ฌ๋ผ๋„ CORS ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
    • Access-Control-Allow-Origin: *
      • ๋งŒ์•ฝ ์ฃผ์†Œ๋ฅผ ์ผ์ผ์ด ์ง€์ •ํ•˜๊ธฐ ์‹ซ๋‹ค๋ฉด *์œผ๋กœ ๋ชจ๋“  ์ฃผ์†Œ์— CORS ์š”์ฒญ์„ ํ—ˆ์šฉ๋˜์ง€๋งŒ ๊ทธ๋งŒํผ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์ง„๋‹ค.
      • ์œ ์‚ฌํ•œ ํ—ค๋”๋กœ Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Methods, Access-Control-Allow-Headers ๋“ฑ์ด ์žˆ๋‹ค.

Reference

profile
-์˜ Velog

0๊ฐœ์˜ ๋Œ“๊ธ€