CORS ๋ ๋ฌด์์ธ๊ฐ
๋ธ๋ผ์ฐ์ ์์๋ ๋ณด์์์ ์์ ์ ์ํด์ cross-origin HTTP ์์ฒญ์ ์ ํํ๋ค. ๋ฐ๋ผ์ cross-origin ์์ฒญ์ ํ๊ธฐ ์ํด์๋ ์๋ฒ ์ธก์์ ํ์ฉ์ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ HTTP-header ๋ก ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ CORS๋ผ๊ณ ํ๋ค.
CORS ๊ฐ ํ์ํ ์ด์ ๋ ๋ค๋ฅธ ์ฌ์ดํธ์์ ์๋์ ์ฌ์ดํธ๋ฅผ ํ๋ด๋ด์ ์ ์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํจ์ด๋ค. ๊ธฐ์กด ์ฌ์ดํธ์ ๋์ผํ๊ฒ ๋์ํ๊ฒ ๊ตฌํํ์ฌ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์์ ์ผ๋ก ๊ฐ๋ก์ฑ๋ ๋ฑ์ ๊ณต๊ฒฉ์ ํ์ง ๋ชปํ๋๋ก CORS๋ฅผ ํตํด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ํ์๊ฐ ํ์ํ ๊ฒ์ด๋ค.
CROSS-ORIGIN ์ด๋
cross-origin ์ด๋ ์ด๋ค ์ค ํ๊ฐ์ง๋ผ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
1. protocol : ํ๋กํ ์ฝ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ด๋ค. ex. http != https
2. domain : ๋๋ฉ์ธ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ด๋ค. ex. domain.com != domain2.com
3. port : ์๋ฅผ ๋ค์ด์ ํ์ฌ ์ฅ๊ณ ์ฑ์ด 8000๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด, ๋ฆฌ์กํธ ์ฑ์ด 3000๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ ip ๋ผ๊ณ ํ๋๋ผ๋ cross-origin ์ ํด๋นํ๊ฒ ๋๋ค.
Django์์ CORS ์ค์ ํ๊ธฐ
Django ์์๋ django-cors-headers package๋ฅผ ์ค์นํด์ฃผ๋ฉด ๋๋ค.
pip install django-cors-headers
settings.py ์ ๋ค์๊ณผ ๊ฐ์ด cors ์ค์ ์ ์ถ๊ฐํ๋ค. Django ์ฑ ๋ฆฌ์์ค ์ ๊ทผ์ ํ์ฉํ ip+port ๋ฒํธ๋ฅผ ์ ์ด์ฃผ๋ฉด๋๋ค.
๋์ ๊ฒฝ์ฐ React ์ฑ(ํ๋ก ํธ์๋)์์์ ์ ๊ทผ์ ํ์ฉํ๊ธฐ ์ํด์ ํฌํธ ๋ฒํธ๋ฅผ 3000์ผ๋ก ์ง์ ํ๋ค.
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
]
...
CORS_ORIGIN_WHITELIST = ['http://127.0.0.1:3000',
'http://localhost:3000']
CORS_ALLOW_CREDENTIALS = True
'Backend ๐ป > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] UserCreationForm ์ดํด๋ณด๊ธฐ & ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ (0) | 2023.03.25 |
---|