ํ•ญํ•ด99 5์ฃผ์ฐจ์—๋Š” ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ํ•จ๊ป˜ ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ์ „์—๋„ CORS ๋ชจ๋“ˆ์„ ์„ค์น˜์— ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋ผ๊ณ ๋งŒ ๋“ค์—ˆ๋Š”๋ฐ, 

ํ”„๋ก ํŠธ ์ž‘์—…๊ณผ ์—ฐ๊ฒฐ์‹œ ํ•„์š”ํ•œ ์ž‘์—…์ด๊ธฐ์— CORS๋ฅผ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 


 

CORS๋ž€?

 

CORS(Cross-Origin Resource Sharing), ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ผ๊ณ  ํ•ด์„๋œ๋‹ค. 
CORS์ •์ฑ…์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ๋ฆฌ์†Œ์Šค๋“ค์ด ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ด€๋ฌธ์ด๋‹ค. 

 

์›น ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด CORS ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฝ˜์†”์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ๋‹ค.

 

CORS ๊ด€๋ จ ์ด์Šˆ๋Š” ๋ชจ๋‘ CORS ์ •์ฑ…์„ ์œ„๋ฐ˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค.

์œ„์˜ ์—๋Ÿฌ๋Š” CORS๋ฅผ ํ—ˆ์šฉํ•ด์„œ ์•„๋ฌด๋Ÿฐ ํƒˆ ์—†์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•ด๋‹ฌ๋ผ๋Š” ๊ถŒ๊ณ ์‚ฌํ•ญ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค.

CORS๋ผ๋Š” ๋ฐฉ์–ด๋ง‰ ๋•๋ถ„์— ์šฐ๋ฆฌ๊ฐ€ ์ด ๊ณณ ์ € ๊ณณ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๋Š” ์ตœ์†Œํ•œ์˜ ๋ณด์žฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ถœ์ฒ˜ (Origin) ๋ž€?

 

์„œ๋ฒ„์˜ ์œ„์น˜๋ฅผ ์˜๋ฏธํ•˜๋Š” URL์€ Protocol, Host, Port ๊นŒ์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

 

 

์›น์—๋Š” SOP(Same Origin Policy) ์™€ CORS(Cross Origin Resource Sharing) ๋‘๊ฐ€์ง€ ์ •์ฑ…์ด ์žˆ๋‹ค.

 

โ–ถ SOP(๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…) โ—€

๊ฐ™์€ ์ถœ์ฒ˜์—์„œ๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค" ๋ผ๋Š” ๊ทœ์น™์„ ๊ฐ€์ง„ ์ •์ฑ…

 

→ URL์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ Protocol, Host, Port ์„ธ๊ฐ€์ง€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.

→ ๊ฐ™์€ Protocol, Host, Port์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์š”์†Œ๋Š” ๋‹ค๋ฅด๋”๋ผ๋„ ๊ฐ™์€ ์ถœ์ฒ˜๋กœ ์ธ์ •๋œ๋‹ค.

→ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž์‹ ์˜ ์ถœ์ฒ˜์™€ ๋‹ค๋ฅผ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ต์ฐจ์ถœ์ฒ˜ ์š”์ฒญ์„ ์‹คํ–‰ํ•œ๋‹ค. 

์ฆ‰, Protocol, Host, Port ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด Cross Origin ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

โ–ท ์‹ค๋ฌด์—์„œ ์ฐธ๊ณ ํ•˜์ž๋ฉด โ—

ํ”„๋ก ํŠธ ์„œ๋ฒ„์™€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์—ฐ๊ฒฐ์‹œ

ํ”„๋ก ํŠธ ์„œ๋ฒ„ URL์ด  http://localhost:3000,

๋ฐฑ์—”๋“œ ์„œ๋ฒ„ http://localhost:8080 ์ผ๋•Œ

 

SOP ์ •์ฑ…์— ์–ด๊ธ‹๋‚˜๊ธฐ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์ด ๋„˜์–ด์˜ฌ ๋•Œ 

๋ธŒ๋ผ์šฐ์ €์—์„œ CORS ์ •์ฑ… ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 

 

 

โ–ถ CORS (๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ) โ—€

์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•œ ์ถœ์ฒ˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜

์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ  ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ์ด๋‹ค. 

 

 

 

 

CORS ๋™์ž‘๋ฐฉ์‹

 

1. ํด๋ผ์ด์–ธํŠธ์—์„œ  HTTP์š”์ฒญ ํ—ค๋”์— Origin์„ ๋‹ด์•„ ์ „๋‹ฌํ•œ๋‹ค. 

 

2. ์„œ๋ฒ„๋Š” ์‘๋‹ตํ—ค์–ด์— Access-Control-Allow-Origin์„ ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

 

3. ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž์‹ ์ด ๋ณด๋ƒˆ๋˜ ์š”์ฒญ์˜ Origin๊ณผ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ค€ Access-Control-Allow-Origin์„ ๋น„๊ตํ•œ๋‹ค. 

์ž์‹ ์ด ๋ณด๋‚ธ Origin๊ณผ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ค€ Access-Control-Allow-Origin์„ ๋น„๊ตํ•˜์—ฌ ์ฐจ๋‹จํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. 

๋งŒ์•ฝ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ทธ ์‘๋‹ต์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฒ„๋ฆฐ๋‹ค. 

(์œ„์˜ ๊ฒฝ์šฐ ๋‘˜๋‹ค http://localhost:3000 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ํšจํ•œ ๊ฒฝ์šฐ๋‹ค.)

 

 

 

 

์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-CORS-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-%F0%9F%91%8F

 

[WEB] ๐Ÿ“š CORS ๊ฐœ๋… ๐Ÿ’ฏ ์™„๋ฒฝ ์ •๋ฆฌ & ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๐Ÿ‘

CORS(Cross Origin Resource Sharing) CORS ์ •์ฑ…์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ๋ฆฌ์†Œ์Šค๋“ค์ด ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ด€๋ฌธ์ด๋‹ค. ์›น๊ฐœ๋ฐœ์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ด CORS ์ •์ฑ…์œ„๋ฐ˜์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ƒํ™ฉ์„ ๋งŽ์ด๋“ค ๊ฒช์–ด๋ดค์„๊ฒƒ์ด๋ผ

inpa.tistory.com

 

+ Recent posts