ํด๋ผ์ด์ธํธ์์ AWS S3 ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋์ค CORS ์๋ฌ๋ฅผ ๋ง์ฃผํ๊ฒ ๋๋ค.
๋ฒํท-๊ถํ-CORS ์ค์ ์ ์์ฑํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ด๋ฒ ๊ธฐํ์ CORS์ ๋ํ ๊ฐ๋
์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
๊ต์ฐจ ์ถ์ฒ ์์ ๊ณต์
๋ง์ด ์ด๋ ต์ง๋ง ์ฝ๊ฒ ๋งํด์ ๋ค๋ฅธ Origin(์ถ์ฒ)์์ ๋ฐ์ดํฐ ๊ตํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
CORS ์๋ฌ๋ ์์ฒญ ๋ฐ์ Origin์ ์๋ฒ์์ ์์ฒญ์ ํ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
URL์ ๊ตฌ์ฑ ์์์ธ ํ๋กํ ์ฝ, ๋๋ฉ์ธ, ํฌํธ ๋ฒํธ๋ฅผ ํฌํจํ ์ฃผ์
URL: https://www.example.com:8000
์ฆ, Origin = ํฌ๋กํ ์ฝ + ๋๋ฉ์ธ + ํฌํธ ๋ฒํธ
๋์ผ ์ถ์ฒ ์ ์ฑ
์์ ๊ณผ ๋์ผํ Origin(์ถ์ฒ)์์ ๋ก๋๋ ๋ฆฌ์์ค์๋ง ์ ๊ทผํ ์ ์๋ ์ ์ฑ
์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๋ณด์ ๋ชจ๋ธ๋ก์ ์
์์ ์ธ ๋ฆฌ์์ค ์ ๊ทผ์ ๋ฐฉ์งํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ถ์ฒ์์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ํ์ํด์ง์ ๋ฐ๋ผ SOP ์ ์ฑ
์ ์ํํ ๊ฒ CORS์ด๋ค.
์ ๋ฆฌํ์๋ฉด,
SOP = A Origin์์๋ ๊ฐ์ A Origin๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ค.
CORS = A Origin์์ B Origin๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ค.
HTTP ์๋ต ํค๋๋ฅผ ์๋ฒ ์ธก์์๋ ํน์ Origin(์ถ์ฒ)์ ๋ํ ์์ฒญ์ ํ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ์๋ต ํค๋์ Access-Control-Allow-Origin์ด๋ผ๋ ํค๋๋ฅผ ์ถ๊ฐํด์ ํ์ฉ๋ Origin์ ๋ช
์ํ๋ค.
์๋ฅผ ๋ค์ด
Access-Control-Allow-Origin: https://www.allowed-origin.com
์ด๋ ๊ฒ ๋ช
์ํ๋ฉด ์๋ฒ๋ https://www.allowed-origin.com์ด๋ผ๋ Origin์ CORS๋ฅผ ํ์ฉํ๊ฒ ๋๋ค.
*(์์ผ๋์นด๋)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ Origin๋ฅผ ํ์ฉํ๋ค๋ ๋ป์ด๋ค.
Django ์์๋ django-cors-headers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์ค์ ํ ์ ์๊ณ
AWS S3์์๋ ๋ฒํท ์ ์ฑ
์์ CORS๋ฅผ ์ค์ ํ ์ ์๋ค.
๊ฐ ์ธ์ด, ํ๋ ์์ํฌ์ ๋ง๊ฒ CORS๋ฅผ ์ค์ ํ์.
์ถ๊ฐ์ ์ผ๋ก Access-Control-Allow-Origin๋ฟ๋ง ์๋๋ผ CORS ๊ด๋ จ ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋ค.
์๋ฒ์์ ํ์ฉ ํ๋์ง ์ ํ๋์ง์ ๋ฐ๋ผ CORS๊ฐ ์ฒ๋ฆฌ๋๊ธฐ์ ํด๋ผ์ด์ธํธ์์ ๋ฐ๋ก ๋ญ๊ฐ๋ฅผ ํ ํ์๋ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก CORS ์ ์ฑ
์ด ์๋์ผ๋ก ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋ CORS ๊ด๋ จ ํน์ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋ ์๋ต์ ์ฒ๋ฆฌํด์ผ ํ ๋, Fetch API๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ถ๊ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์๋ CORS ํ์ธ์ ์ํด Preflight ์์ฒญ์ ๋ณด๋ด๊ธฐ๋ ํฉ๋๋ค.
์ค์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ , ์๋ฒ์์ ํด๋น ์์ฒญ์ ํ์ฉํ๋์ง ํ์ธ์ ์ํ ์ฌ์ ์์ฒญ(HTTP)
OPTIONS ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
์ฌ์ ์ CORS๋ฅผ ์ค์ํ๋์ง ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ค.
CORS ๊ตฌ์ฑ์์ *(์์ผ๋์นด๋)๋ ๋ณด์์ ๋ฌธ์ ๊ฐ ๋ ์ ์๊ธฐ์ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํ๋ค.
CORS ์๋ฌ ์ด๋ ค์ธ ๊ฑฐ ํ๋ ์๋ค.
๐๐ปโ ์๋ชป๋ ์ ๋ณด๋ ๋๊ธ์ ํตํด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.