Proxy
1. CORS ์ ์ฑ
์ด ํ์ํ ์ด์
๋ธ๋ผ์ฐ์ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก API๋ฅผ ์์ฒญํ ๋์, ๋ธ๋ผ์ฐ์ ์ ํ์ฌ ์ฃผ์์ API์ ์ฃผ์์ ๋๋ฉ์ธ์ด ์ผ์นํด์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ์ ์๊ฒ ๋์ด ์์
๊ตฌ์ถํ ํด๋ผ์ด์ธํธ ๋ค์ ์๋ฒ์ ์ฐ๊ฒฐ๋ DB์๋ live data๋ ๋ฏผ๊ฐ์ฑ์ด ๋์ ๋ฐ์ดํฐ๋ค์ด ์์ฃผ์ด๊ธฐ ๋๋ฌธ์ ๋ณด์์ด ๋ฌด์๋ณด๋ค ์ค์
๋ง์ฝ ์๋น์ค๊ฐ ๋ชจ๋ ์ถ์ฒ์ ์ ๊ทผ์ ํ๋ฝํ๋ค๋ฉด ํดํน์ ์ํ์ ๋ ธ์ถ๋ ์ ์๊ธฐ์ ๋ชจ๋ ๋๋ฉ์ธ์ ํ์ฉํด์๋ ์ ๋๊ณ , ํน์ ๋๋ฉ์ธ์ ํ์ฉํ๋๋ก ๊ตฌํํด์ผ ํจ.
๋ฐ๋ผ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์์๊ฒ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์๋ฒ ๋๋ฉ์ธ์ ํ์ฉํด ๋ฌ๋ผ๊ณ ์์ฒญ์ ํด์ผ ํ๊ณ ,
๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ์๋ต ํค๋์ ํ์ํ ๊ฐ๋ค์ ๋ด์์ ์ ๋ฌ์ ํด์ค์ผ ํจ.
์๋ฒ์์ ์ ์ ํ ์๋ต ํค๋๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ
2. Proxy
์์ ์ ์์ ์ธ ๊ณผ์ ์์ด React ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํน์ Webpack Dev Server์์ ์ ๊ณตํ๋ proxy ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด CORS ์ ์ฑ ์ฐํ ๊ฐ๋ฅ
์ฆ, ๋ณ๋์ ์๋ต ํค๋๋ฅผ ๋ฐ์ ํ์ ์์ด ๋ธ๋ผ์ฐ์ ๋ React ์ฑ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ํด๋น ์์ฒญ์ ๋ฐฑ์๋๋ก ์ ๋ฌํ๊ฒ ๋๋ ๊ฒ.
์ฌ๊ธฐ์ React ์ฑ์ด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌํ๊ธฐ์, ๋ธ๋ผ์ฐ์ ๋ CORS ์ ์ฑ ์ ์๋ฐํ๋์ง ๋ชจ๋ฅด๊ฒ ๋จ.
์ฆ, ๋ธ๋ผ์ฐ์ ๋ฅผ proxy ๊ธฐ๋ฅ์ ํตํด ์์ด๋ ๊ฒ.
3. Proxy ์๋ ํ๋ฆ
proxy ์ ์ฉ ์ ํ๋ฆ
ํ๋ก ํธ์๋์์ ๊ฐ๋ฐํ React ์ฑ์์ ๋ธ๋ผ์ฐ์ ์ชฝ์ผ๋ก ์์ฒญ์ ๋ณด๋
๋ธ๋ผ์ฐ์ ๋ ๋ฐฑ์๋, ์ฆ ์๋ฒ ์ชฝ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ์์ฒญํจ. ์ด๋ ์ ๊ทผ ๊ถํ์ด ์๋์ง, ์ฆ ์ถ์ฒ๊ฐ ๊ฐ์์ง ํ์ธํ๋๋ฐ ์ด๋ ๋ฐฑ์๋ ์๋ฒ๋ ์ ์์ ์ผ๋ก 200 OK ์๋ต์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋.
๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ๋ฆฌ์์ค ๋ฐ ์๋ต๊ณผ ํจ๊ป ์ถ์ฒ๊ฐ ๊ฐ์์ง ์๋์ง ํ์ธํ๊ฒ ๋๋๋ฐ, ์ด๋ ์ถ์ฒ๊ฐ ๋ค๋ฅด๋ค๋ฉด ์๋ต์ ํ๊ธฐ(CORS Error) ํ๊ณ , ์ถ์ฒ๊ฐ ๊ฐ๋ค๋ฉด ์๋ต์ ํ๊ธฐํ์ง ์๊ณ ๋ค์ ํ๋ก ํธ์๋ ์ชฝ์ผ๋ก ์๋ต์ ๋ณด๋ด์ฃผ๋ ๊ฒ์.
proxy ์ ์ฉ ํ ํ๋ฆ
React ์ฑ์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด API๋ฅผ ์์ฒญํ ๋, proxy๋ฅผ ํตํด ๋ฐฑ์๋ ์๋ฒ๋ก ์์ฒญ์ ์ฐํํ์ฌ ๋ณด๋
๋ฐฑ์๋ ์๋ฒ๋ ์๋ต์ React ์ฑ์ผ๋ก ๋ณด๋ด๊ณ , React ์ฑ์ ๋ฐ์ ์๋ต์ ๋ฐฑ์๋ ์๋ฒ ๋์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํจ.
์ด๋ ๊ฒ ๋๋ฉด ์ถ์ฒ๊ฐ ๊ฐ์์ง๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๋ ์ด ์ฌ์ค์ ๋์น์ฑ์ง ๋ชปํ๊ณ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
4. Proxy ์ฌ์ฉ๋ฒ
webpack dev server proxy
์นํฉ ๊ฐ๋ฐ์๋ฒ์ proxy ์ค์ ์ ์๋ ์นํฉ ์ค์ ์ ํตํด์ ์ ์ฉํ์ง๋ง, CRA๋ฅผ ํตํด ๋ง๋ ๋ฆฌ์กํธ ํ๋ก์ ํธ์์๋ package.json ์์ "proxy" ๊ฐ์ ์ค์ ํ์ฌ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ๊ตฌ์ฑ๋จ
๊ธฐ์กด์ fetch, ํน์ axios๋ฅผ ํตํด ์์ฒญํ๋ ๋ถ๋ถ์์ ๋๋ฉ์ธ ๋ถ๋ถ์ ์ ๊ฑฐ
React Proxy ์ฌ์ฉ๋ฒ
webpack dev server์์ ์ ๊ณตํ๋ proxy๋ ์ ์ญ์ ์ธ ์ค์ ์ด๊ธฐ์, ์ข ์ข ํด๋น ๋ฐฉ๋ฒ์ด ์ถฉ๋ถํ ์ ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ๋ ํจ.
๊ทธ๋์ ์๋์ผ๋ก proxy๋ฅผ ์ ์ฉํด์ค์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด๋๋ http-proxy-middleware ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ
http-proxy-middleware ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
React App์ src ํ์ผ ์์์ setupProxy.js ํ์ผ ์์ฑ ํ, ์์์ ์ค์นํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ๋ถ๋ฌ์จ ๋ค์, ์๋์ ๊ฐ์ด ์์ฑ
๊ธฐ์กด์ fetch, ํน์ axios๋ฅผ ํตํด ์์ฒญํ๋ ๋ถ๋ถ์์ ๋๋ฉ์ธ ๋ถ๋ถ์ ์ ๊ฑฐ
Last updated