[๋ฐ๋ธŒ์ฝ”์Šค] WEEK18๐Ÿš€

๋ฐ•์†ก์ดยท2021๋…„ 12์›” 29์ผ
0
post-thumbnail

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ”„๋ก ํŠธ์—”๋“œ 84์ผ์ฐจ

2์ฐจ ์Šคํ”„๋ฆฐํŠธ ๐Ÿฅณ

2์ฐจ ์Šคํ”„๋ฆฐํŠธ ๊ธฐ๋Šฅ์„ ์‚ฐ์ •ํ•˜๊ณ  ๋ถ„๋ฐฐํ•˜๋Š” ๋‚ ! ์ด๋ฒˆ์— ๋ถ„๋ฐฐ๋ฐ›์€ ๊ธฐ๋Šฅ์€ ํšŒ์›๊ฐ€์ž…, ๋‚ด ์ •๋ณด ์ˆ˜์ • ์ด๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์›๋“ค์ด ๊ฑฐ์˜ ๋งค์ผ ๊ฐ™์ด ์ƒˆ๋ฒฝ์„ ์ƒˆ๋ฉด์„œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ํŒ€์žฅ์œผ๋กœ ํ•ด์•ผํ• ์ผ์ด ๋ฌด์—‡์ด ์žˆ์„๊นŒ๋ผ๋Š” ๊ณ ๋ฏผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์•„๋งˆ ์ด๋ ‡๊ฒŒ 3์ฐจ, 4์ฐจ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ง€์ณ๋ฒ„๋ฆฌ์ง€ ์•Š์„๊นŒ๋ผ๋Š” ๊ฑฑ์ •์ด ์ƒ๊ธด๋‹ค. ์ด๋ฒˆ ์Šคํ”„๋ฆฐํŠธ์—์„œ๋„ ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋๋‚ด๊ณ  ํŒ€์›๋“ค ์ผ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ฐพ์•„๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค!

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ”„๋ก ํŠธ์—”๋“œ 85์ผ์ฐจ

๋ฐฐํฌํ•ด์•ผ๊ฒ ์ฃ ? โ˜‚๏ธ

1์ฐจ ์Šคํ”„๋ฆฐํŠธ์—์„œ ๊ฐ€์žฅ ๋ถˆํŽธํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์ง€๋ผ๋กœ ์ด์Šˆ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ  ์ตœ์ข… ํ”„๋กœ์ ํŠธ์— ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„์˜ฌ๋ ค๋„ QA๋ฅผ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. QA๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„  ๊ผญ ํ”„๋ก ํŠธ์—”๋“œํŒ€์ด ๋ฐฑ์—”๋“œํŒ€๊ณผ ํ™”๋ฉด๊ณต์œ ๋กœ ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ๋‹ค๊ฐ™์ด๋ด์•ผํ–ˆ๊ณ  ์ด์—๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ฒฐ๊ตญ, ํ”„๋ก ํŠธ์—”๋“œํŒ€๋„ ๋ฐฐํฌ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํ•ด์•ผ๊ฒ ๋‹ค!๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ธฐ์กด github pages, netlify๋กœ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ๊ธฐ์กด๋ณด๋‹จ ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ์€ ๊ฑฑ์ •๋˜๋Š” ๋งˆ์Œ์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ฐฐํฌ๋Š” ๋ฌด์‚ฌํžˆ ์ž˜ ๋˜์—ˆ์ง€๋งŒ SPA์ธ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๊ฐ€ netlify์ƒ์—์„œ url๋กœ ์ ‘๊ทผ ์‹œ 404 ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ ํ•ด๋‹น url์— ๋Œ€ํ•œ html ํŒŒ์ผ์ด ์—†์–ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค. (SPA๋Š” ํŒŒ์ผ์ด html์ด 1๊ฐœ) ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ url๋กœ ์ ‘๊ทผํ•  ๋•Œ ๋งˆ๋‹ค index.html๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜๊ฒŒ๋” /* /index.html 200 ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ณ , ํ•ด๊ฒฐํ–ˆ๋‹ค!

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ”„๋ก ํŠธ์—”๋“œ 85์ผ์ฐจ

CORS? ๋“œ๋””์–ด ๋งŒ๋‚ฌ๊ตฐ์š”? ๐Ÿ™ˆ

ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ์™„์„ฑํ–ˆ๋‹ค. api ์—ฐ๋™๊นŒ์ง€ ๋ฌด๋ฆฌ์—†์ด ์ง„ํ–‰๋˜์–ด ๋‚ด ์ •๋ณด ์ˆ˜์ •๋„ ๋ฌด๋‚œํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์–ด๊ฐ€๊ณ ์žˆ๋˜ ๋„์ค‘, ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ฐ”๋กœ CORS ์˜ค๋ฅ˜! ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•œ๋ฒˆ์ฏค์€ ๋งŒ๋‚˜์•ผํ•˜๋Š” CORS๋ฅผ ๋‘๋ฒˆ์งธ ์Šคํ”„๋ฆฐํŠธ์—์„œ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. CORS ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๋ถ€๋ถ„์€ ๋‚ด ํ”„๋กœ์งˆ ์ด๋ฏธ์ง€์™€ ๋‚ด ์ •๋ณด๋ฅผ GET ํ•ด์˜จ ์ƒํ™ฉ์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ์ˆ˜์ • ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” PATCH์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค. ์šฐ์„ , ๋ฐฑ์—”๋“œํŒ€์—์„œ api ์ˆ˜์ • ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ณ  ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” FileReader ๊ฐ์ฒด์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •!

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ”„๋ก ํŠธ์—”๋“œ 86์ผ์ฐจ

ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค... ๐ŸŒช

CORS ์ด์Šˆ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์› api ํ˜ธ์ถœ ์‹œ์—๋„ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด๋ฒˆ์—” PUT์—์„œ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ๋งˆ์นจ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ•์˜์žฅ์œผ๋กœ ๊ฐ™์ด ๋ชจ์ด๋Š” ๋‚ ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ชจ์—ฌ ๊ฐ™์ด ํ•ด๊ฒฐํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฐํฌ ํ›„ ์ƒˆ๋กœ์šด ๋ฌธ์ œ์— ๋ด‰์ฐฉํ–ˆ๋‹ค. ์ด๋ฒˆ์—” ํฌ๋กฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” http ์ด์Šˆ์˜€๋‹ค. ์ด๋Š” https์—์„œ ๋ฐฐํฌ๋œ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ http๋กœ ๋˜์–ด์žˆ๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ƒ ํฌ๋กฌ์—์„œ ๋ง‰์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ์˜€๋‹ค. (๊ฒฐ๊ตญ CORS) ์ด ๋‘๊ฐ€์ง€ ์ด์Šˆ๋กœ ์ธํ•ด ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๋‘˜๋‹ค ์ง„๋„ ๋‚˜๊ฐ€๋Š”๊ฒƒ์„ ์ค‘๋‹จํ•ด์•ผํ–ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ”„๋ก ํŠธ์—”๋“œ 87์ผ์ฐจ

ํœด! ํ•ด๊ฒฐ!! โ˜€๏ธ

ํ•˜๋ฃจ์ข…์ผ CORS ์˜ค๋ฅ˜๋กœ ์”จ๋ฆ„ํ–ˆ๋‹ค...! ํ•˜์ง€๋งŒ ์ด๋ฅผ ํ†ตํ•ด CORS๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ ์ถฉ๋ถ„ํžˆ ๊ฐ€์น˜์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์šฐ์„  ๋ฐฑ์—”๋“œํŒ€๊ณผ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ํ™•์ธํ•˜๋ฉด์„œ ์˜๋ฌธ์ ์ด ๋ช‡๊ฐ€์ง€ ์žˆ์—ˆ๋‹ค.
(1) ์™œ PATCH, PUT์„ ํ–ˆ๋Š”๋ฐ OPTIONS ๋ฉ”์†Œ๋“œ๊ฐ€ ์š”์ฒญ์ด ์˜ค๋‚˜์š”?
ํ”„๋ก ํŠธ์—”๋“œํŒ€๊ณผ ๋ฐฑ์—”๋“œํŒ€ ๋‘˜๋‹ค OPTIONS ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์ฒ˜์Œ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. http ํ”„๋กœํ† ์ฝœ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์œ ํ˜•์—” simple request์™€ multi request๊ฐ€ ์žˆ๋‹ค. ์ด ์ค‘ ์šฐ๋ฆฌ๊ฐ€ authorization ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ์ž ํ† ํฐ์„ ํ—ค๋”์— ๋„ฃ์–ด ๋ณด๋‚ด๋Š” ๊ฒƒ์€ multi request๋‹ค. multi request๋ฅผ ๋ณด๋‚ผ ๋• ์ด ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ๋˜๋‹ˆ? ๋ผ๋Š” ์˜๋ฏธ๋กœ OPTIONS ์š”์ฒญ์„ ๋จผ์ € ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ์„œ๋ฒ„ ์ธก์—์„œ ์ ์ ˆํ•œ ์‘๋‹ต์„ ํ•ด์ฃผ๋ฉด PATCH, PUT, POST ๋ญ ๋“ฑ๋“ฑ์˜ multi request ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค!
(2) ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ๋” ์„ค์ •ํ•ด๋‘์—ˆ๋‹ค! ํ•˜์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค!
์ด ๋‚ด์šฉ์€ ๋ฐฑ์—”๋“œํŒ€์—์„œ ๊ณต์œ  ๋ฐ›์•˜๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ์„ค์ •ํ•œ๋‹ค. ํ•˜์ง€๋งŒ OPTIONS๋ฅผ ์œ„ํ•ด ์žฌ์„ค์ •์„ ํ–ˆ์ง€๋งŒ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ ์š”์ฒญ์„ ๋ฐ›๋Š” ๋ณด์•ˆ์ชฝ?์—์„œ๋„ ์ด๋ฅผ ์žฌ์„ค์ • ํ–ˆ์–ด์•ผํ–ˆ์ง€๋งŒ, ์žฌ์„ค์ •์ด ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ–ˆ๋˜ ์˜ค๋ฅ˜์˜€๋‹ค. ๊ฒฐ๊ตญ ์žฌ์„ค์ • ํ›„ ํ”„๋กœ์ ํŠธ๋Š” ๋ฌด์‚ฌํžˆ ๋‹ค์‹œ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค.
(3) ๊ทธ๋ž˜์„œ ํ•ด๊ฒฐ๋ฒ•์ด ๋ญ”๋ฐ?
์šฐ์„ , ํ”„๋ก ํŠธ์—”๋“œ ์ธก์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ํ”„๋ก์‹œ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ด์šฉํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์šฐํšŒํ•ด ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํšŒํ”ผ์ธ๊ฒƒ ๋ฟ์ด๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์€ CORS ์ •์ฑ…์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ http๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ๋‚˜์ค‘์— ์•Œ์•˜์ง€๋งŒ, ์ด๋ฒˆ CORS ์ด์Šˆ๋Š” PATCH, PUT์„ ์ •์ฑ…์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค. http ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์ž˜ ๋ชฐ๋ž๋˜ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๋ชจ๋‘ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค.

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