[ WIL ] ( Week 6 ์ฃผ์ฐจ) ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)

2023. 9. 17. 23:26ใ†0. TiL ( Today I Learned )

[๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)]

 

๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)๋Š” ์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•œ ์ถœ์ฒ˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž์‹ ์˜ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ)์™€ ๋‹ค๋ฅผ ๋•Œ ๊ต์ฐจ ์ถœ์ฒ˜ HTTP ์š”์ฒญ์„ ์‹คํ–‰ํ•œ๋‹ค.

๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์˜ ์˜ˆ์‹œ: https://domain-a.com ํ”„๋ŸฐํŠธ ์—”๋“œ JavaScript ์ฝ”๋“œ๊ฐ€ XMLHttpRequest ์‚ฌ์šฉํ•˜์—ฌ https://domain-b.com/data.json ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ.

๋ณด์•ˆ ์ƒ์˜ ์ด์œ ๋กœ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‹œ์ž‘ํ•œ ๊ต์ฐจ ์ถœ์ฒ˜ HTTP ์š”์ฒญ์„ ์ œํ•œํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, XMLHttpRequestFetch API๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์„ ๋”ฐ๋ฆ„. ์ฆ‰, ์ด API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ž์‹ ์˜ ์ถœ์ฒ˜์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ทธ ์ถœ์ฒ˜์—์„œ ์˜ฌ๋ฐ”๋ฅธ CORS ํ—ค๋”๋ฅผ ํฌํ•จํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

CORS ์ฒด์ œ๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์•ˆ์ „ํ•œ ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ ๋ฐ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋Š” XMLHttpRequest ๋˜๋Š” Fetch์™€ ๊ฐ™์€ API์—์„œ CORS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์ฐจ ์ถœ์ฒ˜ HTTP ์š”์ฒญ์˜ ์œ„ํ—˜์„ ์™„ํ™”ํ•œ๋‹ค.

 

 

์–ด๋–ค ์š”์ฒญ์ด CORS๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  ํ‘œ์ค€์€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ ์ถœ์ฒ˜๋ฅผ ์„œ๋ฒ„์—์„œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด HTTP ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋™์ž‘ํ•œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ, ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์— ๋ถ€์ˆ˜ ํšจ๊ณผ(side effect)๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ(GET ์ œ์™ธํ•œ HTTP ๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•ด, CORS ๋ช…์„ธ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ OPTIONS "ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ"(preflight, ์‚ฌ์ „ ์ „๋‹ฌ)ํ•˜์—ฌ ์ง€์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„์˜ "ํ—ˆ๊ฐ€"์— ๋–จ์–ด์ง€๋ฉด ์‹ค์ œ ์š”์ฒญ์„ ๋ณด๋‚ด๋„๋ก ์š”๊ตฌํ•˜๊ณ  ์žˆ๋‹ค.

๋˜ํ•œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์— "์ธ์ฆ์ •๋ณด"(์ฟ ํ‚คHTTP ์ธ์ฆ)๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

CORS ์‹คํŒจ๋Š” ์˜ค๋ฅ˜์˜ ์›์ธ์ด์ง€๋งŒ, ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ JavaScript์—์„œ๋Š” ์˜ค๋ฅ˜์˜ ์ƒ์„ธ ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋ฟ์ด๋‹ค. ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒƒ์ด ์‹คํŒจํ–ˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†”์„ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ ํ•ญ๋ชฉ์€ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ํ•จ๊ป˜, ์‚ฌ์šฉํ•œ HTTP ํ—ค๋”์˜ ์ƒ์„ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃฌ๋‹ค.

 

์ถœ์ฒ˜ : https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

 

๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  (CORS) - HTTP | MDN

๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)๋Š” ์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•œ ์ถœ์ฒ˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ

developer.mozilla.org


์ž์ฃผ๋ณด๋Š” ์–„์ฝ”๋‹˜์˜ ๊ฐ•์˜์—์„œ CORS์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ณด์•„์„œ, ๋‚ด์šฉ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

 

๊ด€๋ จ URL : https://youtu.be/bW31 xiNB8 Nc? si=foepV_rofbW7 QO-y 

YOUTUBE ์–„ํŒํ•œ ์ฝ”๋”ฉ -  ์›น๊ฐœ๋ฐœ ์งœ์ฆ์œ ๋ฐœ์ž! CORS๊ฐ€ ๋ญ”๊ฐ€์š”?

 

ํ•œ ์‚ฌ์ดํŠธ์—์„œ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ์˜ค๋ฅ˜ CORS

 

์ฃผ์†Œ๊ฐ€ ‘์–ด์ฉŒ๊ณ ’ ๋‹ท์ปด์—์„œ URL ‘์ €์ฉŒ๊ณ ’ ๋‹ท์ปด ์„œ๋น„์Šค์— API๋กœ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด์„œ ํ”„๋ŸฐํŠธ์—์„œ HTTP์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ๋ฏธ๋ฆฌ ์–ด๋–ค ์„ค์ •์„ ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด CORS๋ฌธ์ œ๋กœ ๋ง‰ํžˆ๊ฒŒ ๋œ๋‹ค. ( * postman๊ณผ ๊ฐ™์ด ๋””๋ฅธ ๊ฑธ๋กœ ์š”์ฒญํ•˜๋ฉด ๋‹ค๋˜๋Š”๋ฐ, ์›น์œผ๋กœ ํ•˜๋ฉด ๋ง‰ํž ๋•Œ๊ฐ€ ๋งŽ์Œ ). 

โ–ถ๏ธŽ  ์›น์‚ฌ์ดํŠธ์—์„œ! ์ฆ‰ ๋ธŒ๋ผ์šฐ์ €์ธ ํ”„๋ŸฐํŠธ์—”๋“œ์—์„œ AJAX๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ์•ˆ๋จ ( ํฌ๋กฌ / ์—์ง€ / ์‚ฌํŒŒ๋ฆฌ )

 

CORS๋Š” ์™œ ์žˆ๋Š” ๊ฑธ๊นŒ? 

์˜ˆ๋ฅผ ๋“ค์–ด ์ฐฉํ•œ ๋‹ท์ปด์ด๋ผ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์–ด๋–ค ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜๋ฉด, ๋‹ค์Œ์— ์ ‘์†ํ•  ๋•Œ ๋กœ๊ทธ์ธ์ด ์œ ์ง€๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์„ ์บ์‹œ๋ผ๊ณ  ํ•œ๋‹ค.

๋‚ด ๋กœ๊ทธ์ธ์ •๋ณด๋ฅผ ํ† ํฐ์œผ๋กœ ์ €์žฅํ•ด์„œ,  ๋กœ๊ทธ์ธํ–ˆ๋˜ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค ์š”์ฒญ์— ์‹ค์–ด ๋ณด๋‚ด๋ฉด ๊ทธ ์‚ฌ์ดํŠธ์—์„œ ์ด ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ณ  ๋กœ๊ทธ์ธ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.  ๋งŒ์•ฝ ๋‚ด๊ฐ€ ํฌ๋กฌ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด, ํฌ๋กฌ์— ๋‚ด ์ •๋ณด๊ฐ€ ์ €์žฅ์ด ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋œ๋‹ค.

์ด๋•Œ, ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ๋นผ๋‚ด๊ธฐ ์œ„ํ•ด ๋‚˜์œ ๋‹ท์ปด์„ ๋งŒ๋“ค์–ด ์•…์„ฑ๋ฉ”์ผ์ด ์ด๋‚˜ ๋Œ“๊ธ€์„ ํ†ตํ•ด ํ•ด๋‹น ์‚ฌ์ดํŠธ๋กœ ์œ ์ธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋‚˜์œ ์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ ‘์†์„ ํ•˜๋ฉด  Html / css / js ์ฝ”๋“œ๊ฐ€ ๋‚ด ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ›์•„์งˆ ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ๋ ‡๋‹ค๋ฉด, ๋‚˜์˜ ์ฐฉํ•œ ๋‹ท์ปด์— ์ €์žฅ๋œ ๋‚ด ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ   ์•…์˜์ ์ธ ํ–‰๋™์„ ์ทจํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ API๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

CORS(Cross-Origin Resource Sharing) ๋‹ค๋ฅธ ์ถœ์ฒ˜ ๊ฐ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ,

SOP (Same-Origin Policy) ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… (์š”์ฒญ์„ ๋ง‰๋Š” ๊ฒƒ)

 

์›๋ž˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜๋ผ๋ฆฌ ์š”์ฒญ์„ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์€ ์•ˆ ๋˜๋Š” ๊ฒŒ ๊ธฐ๋ณธ๊ฐ’์ด์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์›น ์ƒํƒœ๊ณ„๊ฐ€ ๋‹ค์–‘ํ•ด์ง€๋ฉด์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋“ค ๊ฐ„์— ๋ณด๋‹ค ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ๊ณ ๋ฐ›์•„์งˆ ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ ๊ฐ„์˜ ์š”์ฒญ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ง‰๊ณ  ์žˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค์€ jsonp (*ํ˜„์žฌ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ) ์šฐํšŒํ•ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. 

์ด๊ฑธ ํ•ฉ์˜ํ•ด์„œ ์ถฉ์กฑ์‹œํ‚ค๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ณต์œ ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด CORS (๊ต์ฐจ ์ถœ์ฒ˜ ์ž์› ๊ณต์œ  ๋ฐฉ์‹)์ด๋‹ค.

 

๋‹จ, ์กฐ๊ฑด์ด ์žˆ๋‹ค.

์š”์ฒญ์„ ๋ฐ›๋Š” ๋ฐฑ์—”๋“œ ์ชฝ์—์„œ ํ—ˆ๋ฝํ•  ๋‹ค๋ฅธ ์ถœ์ฒ˜๋“ค์„ ๋ฏธ๋ฆฌ ๋ช…์‹œํ•ด ๋‘๋ฉด ๋œ๋‹ค.

๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ์“ฐ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด CORS ์˜ต์…˜์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ์‰ฝ๊ฒŒ ๋งˆ๋ จ๋ผ ์žˆ๋‹ค. ์—ฌ๊ธฐ๋‹ค ํ—ˆ์šฉํ•  ์‚ฌ์ดํŠธ๋“ค์„ ์ ์–ด์ฃผ๋ฉด ์ด์ œ ๊ฑฐ๊ธฐ์„œ ์ง€์ •ํ•œ ์‚ฌ์ดํŠธ์—์„œ ์ด ์„œ๋ฒ„๋กœ ์–ผ๋งˆ๋“ ์ง€ HTTP์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์•„๋ฌด๋‚˜ ๋ณด๋‚ด๋„ ๋˜๋Š” ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ„ํ‘œ, ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์ ์–ด ๋„ฃ์œผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค.

๋„ค์ด๋ฒ„ ์ง€๋„์™€ ๊ฐ™์€ api๋„, CORS๋ฅผ ํ—ˆ์šฉํ•ด ์ฃผ๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋”ฐ๋กœ ์žˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ, header๋ž€, ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ „์†ก๋  ๋•Œ 

๋ฐ์ดํ„ฐ์˜ ๋งจ ์•ž์ชฝ์— ๋ถ™์€ ๋ณด์ถฉ ์ •๋ณด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

๋ฐ›๋Š” ์ชฝ์˜ IP์ฃผ์†Œ ์‚ฌ์šฉํ•  ํ”„๋กœํ† ์ฝœ์ด๋‚˜ ์˜ต์…˜ ๋“ฑ์ด ๋‹ด๊ธฐ๋Š”๋ฐ  ์ด๋Š” ์šฐํŽธ์œผ๋กœ ์น˜์ž๋ฉด ๋ด‰ํˆฌ์— ์ ์ธ ๋‚ด์šฉ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (Header์—๋Š” ์š”์ฒญํ•˜๋Š” ์ชฝ์˜ schema ๋„๋ฉ”์ธ, ๊ทธ๋ฆฌ๊ณ  ํฌํŠธ๊ฐ€ ๋‹ด๊ธด๋‹ค. )

 

origin์—์„œ ๋ณด๋‚ธ ์ถœ์ฒ˜๊ฐ’์ด ์„œ๋ฒ„์— ๋‹ต์žฅ ํ—ค๋”์— ๋‹ด๊ธด Access-control-allow-Origin์— ๋˜‘๊ฐ™์ด ์žˆ์œผ๋ฉด ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์•„์˜ค๊ฒŒ ๋œ๋‹ค.

 

ํ† ํฐ๋“ฑ ์‚ฌ์šฉ์ž ์‹๋ณ„ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ์š”์ฒญ์€, ๋ณด๋‹ค ์—„๊ฒฉํ•˜๋‹ค. ๋ณด๋‚ด๋Š” ์ธก ์š”์ฒญ์˜ ์˜ต์…˜์— credentials ํ•ญ๋ชฉ์„ true๋กœ ์„ธํŒ…ํ•ด์•ผ ํ•˜๊ณ , 

๋ฐ›๋Š” ์ชฝ์—์„œ๋„ ์•„๋ฌด ์ถœ์ฒ˜๋‚˜ ๋‹ค ๋œ๋‹ค๋Š” ์™€์ผ๋“œ์นด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋ณด๋‚ด๋Š” ์ชฝ์˜ ์ถœ์ฒ˜ ์›นํŽ˜์ด์ง€ ์ฃผ์†Œ๋ฅผ ์ •ํ™•ํžˆ ๋ช…์‹œํ•œ ๋‹ค์Œ  Access-control-allow-credentials ํ•ญ๋ชฉ์„ true๋กœ ๋งž์ถฐ์ค˜์•ผ ํ•œ๋‹ค. ( ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ€ ๋‚˜์˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ์–ด์„œ ๋ณด๋‹ค ์กฐ๊ฑด์„ ๋†’๊ฒŒ ๊ฐ–์ถ”์–ด์•ผ ํ•จ )

 

โ–ถ๏ธŽ  Simple request ๋ฐฉ์‹์œผ๋กœ get / post ๋“ฑ ์ผ์ •์กฐ๊ฑด์˜ ์š”์ฒญ์— ์‚ฌ์šฉ๋จ

โ–ถ๏ธŽ  Put / delete ๋“ฑ์€ preflight ์š”์ฒญ์„ ๋จผ์ € ๋ณด๋‚ด์„œ ๋ณธ ์š”์ฒญ์ด ์•ˆ์ „ํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ์—ฌ๊ธฐ์„œ ํ—ˆ๋ฝ์ด ๋–จ์–ด์ ธ์•ผ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ( ์„œ๋ฒ„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์œผ๋กœ ๋จผ์ € ํ—ˆ์šฉ์—ฌ๋ถ€ ๊ฒ€์ฆ์ด ํ•„์š”ํ•จ ) 


 

 

์ฒจ๋ถ€ URL : https://evan-moon.github.i/2020/05/21/about-cors/

 

CORS๋Š” ์™œ ์ด๋ ‡๊ฒŒ ์šฐ๋ฆฌ๋ฅผ ํž˜๋“ค๊ฒŒ ํ•˜๋Š”๊ฑธ๊นŒ?

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•œ๋ฒˆ์ฏค์€ ์–ป์–ด๋งž์•„ ๋ดค์„ ๋ฒ•ํ•œ ์ •์ฑ…์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์‹ค ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด CORS ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์€ ๊ต‰์žฅํžˆ ํ”ํ•ด์„œ

evan-moon.github.io

 

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์‹œ ํ”„๋ก ํŠธ์™€ ์—ฐ๊ฒฐํ•˜๋ฉด์„œ ์œ„์™€๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ๋‹ค.

 


 

 

 

 

 

 

Wil์„ ์ ๊ธฐ ์œ„ํ•ด์„œ CORS๋ฅผ ์ฐพ์•„๋ณด๋ฉด์„œ, ๋Œ€๋ถ€๋ถ„์˜ ์ œ๋ชฉ๋“ค์ด ์›ƒํ”„์ง€๋งŒ ์ €๋Ÿฌํ–ˆ๋‹ค.

์‹ค์ œ๋กœ ํŒ€์›๋“ค๊ณผ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ฒจ๋ถ€ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด CORS์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ๋„ ํ–ˆ๋‹ค.

(ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์—์„œ ๊ฐ€์ ธ์˜ด!)

ํ˜‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด ์‹ฌ์‹ฌ์น˜ ์•Š๊ฒŒ ๋งˆ์ฃผํ•˜๊ฒ ์ง€. 

๋‹ค์Œ ์ฃผ๋„ ํŒŒ์ดํŒ… ํ•ด์•ผ์ง€! ใ…‡ ใ…์ž!