-
CORS์นดํ ๊ณ ๋ฆฌ ์์ 2021. 7. 31. 16:17728x90
๐ CORS (Cross-Origin Resource Sharing : ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ ) ๋?
CORS ์ด์ ์ "๋์ผ ์ถ์ฒ ์ ์ฑ " ์ ์์์ผํฉ๋๋ค.
๋์ผ ์ถ์ฒ ์ ์ฑ ์ด๋ "์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ, ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค ์ ๊ทผ๊ถํ์ ์ ์ฝ์ ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๋จ์ ๋ณด์ ์คํ" ์ ๋๋ค.
CORS๋ ์ด ๋ณด์ ์ ์ฝ์ฌํญ์ํด๊ฒฐํ๊ธฐ ์ํด W3C์์ ๊ฐ๋ฐํ ์ฌ์์ ๋๋ค.
๐ป ๊ต์ฐจ ์ถ์ฒ
๋ธ๋ผ์ฐ์ ธ๋ ๋ฆฌ์์ค๊ฐ ์์ ์ ์ถ์ฒ(๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ)์ ๋ค๋ฅผ ๋ ๋์ผ ์ถ์ฒ ์ ์ฑ ์ ์ํ ๋ณด์ ์ ์ฑ ์ด ์คํ๋ฉ๋๋ค.
๊ต์ฐจ ์ถ์ฒ๋ ๋ง ๊ทธ๋๋ก ํ์ฌ์ ๋ค๋ฅธ ์ถ์ฒ๋ฅผ ๋งํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ถ์ฒ๋ฅผ ์ด๋ป๊ฒ ๋น๊ตํ๋ ๊ฑธ๊น์?
์ถ์ฒ๋ ๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ๋ฅผ ํฉ์น ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฆ, ๋ฆฌ์์ค๊ฐ ์์ ์ธ๊ธํ ์ถ์ฒ(๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ)์ ๋ค๋ฅผ ๋ ๋์ผ ์ถ์ฒ ์ ์ฑ ์ผ๋ก ์ธํด ์ ๊ทผ ์ ์ฝ์ด ๋ฐ์ํฉ๋๋ค.
โฉ ๐ป ๋์ผ ์ถ์ฒ ์ ์ฑ ํ๋ก์ธ์ค
- ๋ธ๋ผ์ฐ์ ๊ฐ Origin ํค๋๋ฅผ ์์ฒญ์ ์ถ๊ฐํฉ๋๋ค. Origin ํค๋๋ Origin:https://www.example.appspot.com๊ณผ ๊ฐ์ด ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ๋ฆฌ์์ค ์ถ์ฒ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- ์๋ฒ๊ฐ ์์ฒญ์ HTTP ๋ฉ์๋์ Origin ํค๋์ ๊ฐ์ ๋์ CORS ๊ตฌ์ฑ์ ์๋ ๋ฉ์๋ ๋ฐ ์ถ์ฒ ์ ๋ณด์ ๋น๊ตํ์ฌ ์ผ์นํ๋ ํญ๋ชฉ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด Access-Control-Allow-Origin ํค๋๋ฅผ ์๋ต์ ํฌํจํฉ๋๋ค. Access-Control-Allow-Origin ํค๋๋ ์ด๊ธฐ ์์ฒญ์ ์๋ Origin ํค๋์ ๊ฐ์ ํฌํจํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ต์ ๋ฐ๊ณ Access-Control-Allow-Origin ๊ฐ์ด ์๋ ์์ฒญ์ ์ง์ ๋ ๋๋ฉ์ธ๊ณผ ์ผ์นํ๋์ง๋ฅผ ํ์ธํฉ๋๋ค. ์ผ์นํ๋ฉด ์์ฒญ์ด ์ฑ๊ณตํฉ๋๋ค. ์ผ์นํ์ง ์๊ฑฐ๋ ์๋ต์ Access-Control-Allow-Origin ํค๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์์ฒญ์ด ์คํจํฉ๋๋ค.
๐ป CORS / ๋์ผ ์ถ์ ์ ์ฑ ํด๊ฒฐํ๊ธฐ
- Access-Control-Allow-Origin ํค๋ ์ธํ
์๋ฒ์์ ๊ฐ๋ฐ์๊ฐ ์์๋ก Access-Control-Allow-Origin ํค๋์ ์๋ง์ ๊ฐ์ ์ง์ ํด ์ฃผ๋ ๊ฒ์ ๋๋ค.
Node์ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด์ ์์ฝ๊ฒ ์ธํ ๊ฐ๋ฅํฉ๋๋ค.
app.use(cors({ origin : '*', // ๋ชจ๋ ์์ฒญ ํ์ฉ origin : true, // ๋ค์ด์ค๋ ์์ฒญ ๋๋ฉ์ธ/ํฌํธ๊ฐ ์๋์ผ๋ก origin์ ์ฝ์ ๋๋ค. origin : 'www.domain.com', // ์ค ์๋น์ค์์๋ ์ค์ ์๋น์ค ๋๋ฉ์ธ์ ๋ฃ์ด. ํด๋น ๋๋ฉ์ธ ์์ฒญ๋ง ํ์ฉํ๋ค. credentials : false, // ๊ฐ๋ฐ๋จ๊ณ์์๋ false, ์ค ์๋น์ค์์๋ true })
- ํ๋ก์ ์ธํ
์ฃผ๋ก ๋์ผ ์ถ์ฒ ๋ณด์์ ์ฑ ์ ๋ก์ปฌ์์ ๊ฐ๋ฐ ์งํ์์ ๋ง์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.
๊ทธ๋ ๊ธฐ์ ์๋ฒ๋ฅผ ์กฐ์ํ๊ธฐ๋ณด๋ค๋ ํ๋ก์ ์ธํ ์ ํตํด ํด๋น ๋ณด์์ ์ฑ ์ ์ฐํํ ์ ์์ต๋๋ค.
Webpack-DevServer๋ฅผ ํ์ฉํ์๋ฉด ๊ฐ๋จํ๊ฒ ๊ตฌํํ์ค ์ ์์ต๋๋ค.
# Reference
Google Cloud : https://cloud.google.com/storage/docs/cross-origin?hl=ko
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (CORS) | Cloud Storage | Google Cloud
์์๋ก ์ด๋ ๋์ผ ์ถ์ฒ ์ ์ฑ ์ ์๋ก ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค ๊ฐ ์ํธ์์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ ์ธก ์น ์ ํ๋ฆฌ์ผ์ด์ (์น๋ธ๋ผ์ฐ์ ๋ฑ)์์ ์ ์ฉ๋๋ ๋ณด์ ์ ์ฑ ์ ๋๋ค. ์ด ๋ณด์ ์กฐ์น๋ ์ ์์ ์ธ
cloud.google.com
MDN : https://developer.mozilla.org/ko/docs/Web/HTTP/CORS
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (CORS) - HTTP | MDN
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)๋ ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ, ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ
developer.mozilla.org