๐คทโ๏ธ ๋ณธ๋ก ์ ์์
ํ๋ก ํธ์๋ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ต์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํ๊ณ ๊ธ์ ๋ณด์๋ฉด ๋ ๋ง์ ๋์์ด ๋ฉ๋๋ค^^
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ต
https://cometruedream.tistory.com/224
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ต
๐ฃ๋ชจ๋ ๋ฒ๋ค๋ฌ? ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ ๋ถ๋ฆฌ๋ ์ฝ๋ ์กฐ๊ฐ๋ค์ ํ๋๋ก ์์ถ ํ๋ ๊ฐ๋ฐ ๋๊ตฌ์ ๋๋ค. ํต์ฌ ์์ ์ HTML, CSS, JAVASCRIPT ์ฌ๋ฌ ํ์ผ์ ํ๋๋ก ๊ฒฐํฉํ์ฌ ๋จ์ผ ํ์ผ๋ก ๋ง๋๋ ๊ฒ์ด๋ค. ์์ถ์ํจ ๋จ์ผ
cometruedream.tistory.com
๐คทโ๏ธ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ CORS ์ค๋ฅ?
ํ๋ก ํธ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ก์ปฌ ํ๊ฒฝ์์ API CORS ์ค๋ฅ๊ฐ ๋น๋ฒํ ๋ฐ์ํ๋ค.
Vite ๊ฐ๋ฐ ํ๊ฒฝ์์ Proxy๋ฅผ ์ฌ์ฉํ์ฌ CORS ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ฐ์ ๋๋ฉ์ธ ์ถ์ฒ๊ฐ ์๋๋๋ผ๋ ์ํํ๊ฒ API ํต์ ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
CORS ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ?
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋์ผํ ORIGIN์ด ์๋ ๊ฒฝ์ฐ CORS 500 ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
- URL ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด protocol, host, port ์ ํ์์ง๋ง ์ด ๋ถ๋ถ์ด ๋ค๋ฅด๊ฒ ์์ฒญ์ด ๋ค์ด๊ฐ๋ฉด CORS ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
URL ๋ํด์ ๋ถ์ & ์ดํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/43
URL ๋ํด์ ๋ถ์ & ์ดํด
์ค๋์ URL์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋๋ฉ์ธ(Domain) ? ๋๋ฉ์ธ์ IP ์ฃผ์๋ฅผ ๊ฐ๋ ์๋ฒ๋ฅผ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ๊ธฐ์ตํ๊ณ ์ฐพ์ ์ ์๋๋ก ๋ง๋ค์ด์ค ์๋น์ค ์ ๋๋ค. ์ค์ ์ปดํจํฐ์์ ํต์ ์์๋ ์ซ์๋ก ํํ
cometruedream.tistory.com
๐คทโ๏ธ CORS ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
๊ธฐ๋ณธ์ ์ผ๋ก CORS ์ค๋ฅ ํด๊ฒฐ์ ๋ฐฑ์๋์์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐฑ์๋์์ ๋ฐ๋ก ์ฒ๋ฆฌ๊ฐ ์ ๋๋ ๊ฒฝ์ฐ ํ๋ก ํธ์์๋ ์์๋ฐฉํธ์ผ๋ก CORS ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
Proxy ์ค์
Proxy๋?
- Proxy๋ API๋ก ๋คํธ์ํฌ ์์ฒญ & ์๋ต์ ์ฃผ๊ณ ๋ฐ๋ client์ server ์ฌ์ด๋ฅผ ์ค๊ณํ๋ ์ค๊ฐ์ ์ญํ ์ด๋ค.
- Proxy ์ค์ ์ ํ๋ค๋ฉด ์์ฒญ์ ๋ ๋ฆด ๋ origin์ ๋ฐ๊ฟ์ server ๋ณด๋ผ ์ ์์ด์ cors ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ค.
- ํด๋ผ์ด์ธํธ ์ชฝ์์ Proxy ์์ ํ๋ ๊ฒ์ ํฌ์๋ Proxy๋ผ๊ณ ํ๋ค (์๋ฒ๋จ์์ Proxy ์ค์ ์ ๋ฆฌ๋ฒ์ค Proxy๋ผ๊ณ ํ๋ค.).
Proxy ์ค์ ๋ฐฉ๋ฒ
vite.config.json ํ์ผ์ Server ์์ proxy ์ต์ ์ ์ค์ ํ๋ค.
- env ํ์ผ๋ก API URL ์ค์
- /api ์ ๋ถ๋ถ์ธ origin์ target์ ์ค์ ๋์ด ์๋ ๋ถ๋ถ์ผ๋ก ๋ฐ๊ฟ ์ค๋ค๋ ์๋ฏธ
์๋์ ๊ทธ๋ฆผ์ผ๋ก Proxy ํ๋ก์ธ์ค๋ฅผ ๋ณผ ์ ์๋ค.
- vite.config.json ํ์ผ์ ์ค์ ํ URL /api ํ๋ก์ ์ค์ ์ด ์ ์ฉ๋๋ค.
- ํ๋ก์ rewrite ํจ์๋ฅผ ํตํด /api ๋ถ๋ถ์ ์ญ์ ํ๊ณ /auth/login/email ๋ณ๊ฒฝํ๋ค.
- changeOrigin ์ต์ ์ผ๋ก HTTP ์์ฒญ ํค๋์ Host ๊ฐ์ target ์ฃผ์๋ก ๋ณ๊ฒฝํ๋ค.
- ๊ฐ์ ๋๋ฉ์ธ์ด ์ถ์ฒ๋ฅผ proxy ์๋ฒ๋ก ๋ณด๋ด๊ณ proxy๋ ์์์ ์ค๋ช ํ๋ฏ์ด ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ์ค๊ฐ ์ค๊ณ์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ Proxy ์๋ฒ์์ target ์ฃผ์๋ก API ํต์ ์ ํ๋ค.
- ์ต์ข ์ ์ผ๋ก CORS ์ค๋ฅ๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ค์ ํ Proxy API ์ฌ์ฉ ๋ฐฉ๋ฒ
๐คทโ๏ธ ์ ๋ฆฌํ์๋ฉด…
ํ๋ก ํธ์์ ํฌ์๋ Proxy๋ฅผ ์ฌ์ฉํ์ฌ CORS๋ฅผ ํํผํด ๋ณด์๊ณ vite์ ์ต์ ์ ํ์ฉํด์ CORS ์ค๋ฅ๋ฅผ ํด๊ฒฐํด ๋ณด์๋ค.
๋ฐ๋์งํ ๋ฐฉ๋ฒ์ ๋ฐฑ์๋์์ ์ฒ๋ฆฌํด ์ฃผ๋ ๊ฒ์ด์ง๋ง ์์๋ฐฉํธ์ผ๋ก ํ ์คํธ๋ฅผ ์ํด์ ํ๋ก ํธ์์ Proxy ์ฐํํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
์ฌ๋ฐ๋ ์ค๋์ ๋ ๋ณ ์ด์ธ ๋ณด๊ณ ๊ฐ์ธ์!
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Tailwind ํ์ค, ๋์ค, ์ธ์ค ํจ๊ณผ className ์ปค์คํ (1) | 2024.06.03 |
---|---|
Next JS์์ tailwind ์ ์ฉ ์๋ ๋ ํด๊ฒฐ๋ฐฉ๋ฒ (1) | 2024.05.17 |
React ํด๋๊ตฌ์กฐ FSD ๊ธฐ๋ฅ ๋ถํ ์ค๊ณ ์ํคํ ์ฒ (1) | 2024.05.02 |
react input ๋ชจ๋ ํ ์คํธ ์ ํํ๋ ๋ฐฉ๋ฒ (0) | 2024.03.21 |
React ์ค๋ณต ํ์ผ ์ ๋ก๋ ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2024.03.14 |