CORS
Last updated
Last updated
CORS๋ ๊ต์ฐจ ์ถ์ฒ ์์ ๊ณต์ (Cross-Origin Resource Sharing) ๋ผ๋ ๋ป์ด๋ค. ์กฐ๊ธ ํ์ด์ ์๊ธฐํ์๋ฉด, ํ ์์์ ์ถ์ฒ์์ ๋ค๋ฅธ ์์์ ์ถ์ฒ๋ก ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋งํ๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ์ถ์ฒ๋ Protocol, Host, Port๋ฅผ ํฉ์น ๊ฒ์ด๋ค.
์ฆ, ์ 3๊ฐ์ ํญ๋ชฉ์ด ๊ฐ๋ค๋ฉด ์ถ์ฒ๊ฐ ๊ฐ๋ค๊ณ ํ๋ค. http://test.com:80
๊ณผ http://test.com
์ http์ ๊ธฐ๋ณธํฌํธ 80์ด ์๋ต๋์ด ๊ฐ์ ์ถ์ฒ๋ผ๊ณ ํ ์์๋ค.
๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก SOP๋ฅผ ๋ฐ๋ฅด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ถ์ฒ์์ ์จ ์์๋ค์ ์ ๊ทผ์ ์ฐจ๋จํ๋ค.
SOP : Same Origin Policy ๋์ผํ ์ถ์ฒ์ ์์ ์ ๊ทผ๋ง ํ์ฉํ๋ ๋ณด์ ์ ์ฑ
SOP๋ฅผ ์งํค์ง ์๋๋ค๋ฉด XSS, XSRF๋ฑ์ ๊ณต๊ฒฉ์ ๋ฐ์ ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๊ฐ ๋๋ ๋นํ ์ฐ๋ ค๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ํน์ ํ ์ค์ ์์ด ๋ค๋ฅธ ์ถ์ฒ์ ์์์ ์ ๊ทผํ๋ คํ๋ฉด ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ด๋ค.
์ฆ, ๋ค๋ฅธ ์ถ์ฒ์ ์์์ ์ ๊ทผ์ ํด์ผ ํ ๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก ๊ต์ฐจ ์ถ์ฒ ์์๊ณต์ ์ธ cors์ด๋ค
์ด cors๊ฐ ๋์ํ๋ ์๋ฆฌ๋ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด์.
์ฐ๋ฆฌ๊ฐ ์น์์ ๋ค๋ฅธ ์ถ์ฒ์ ์์์ ์ ๊ทผํ ๋, http ํค๋์ ์์ฒญ์ ๋ณด๋ธ๋ค. ๋ฐ๋ก ์ด ์์ฒญ ํค๋์ Origin
ํ๋์ ์์ฒญ์ ๋ณด๋ด๋ ์ถ์ฒ๋ฅผ ์์ฑํด์ ๋ณด๋ธ๋ค.
์ดํ, ์๋ฒ์์ ์๋ต์ Access-Control-Allow-Origin ํค๋์ ์ค์ ๋ Origin์ ๋ชฉ๋ก์ ์์ฒญ์ Origin ๊ฐ์ด ์๋ ํ์ธํ๊ณ , ์๋ค๋ฉด ์๋ต์ ์ฌ์ฉํ์ง ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํด๋ผ์ด์ธํธ์์๋ api์์ฒญ์ ์ด๋ป๊ฒ ํ๋ ๊ฒ์ผ๊น? ํฌ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
๋จผ์ ๋ก์ปฌํ๊ฒฝ์์๋ง ํด๊ฒฐํ๊ณ ์ถ๋ค๋ฉด ๊ตฌ๊ธ ํฌ๋กฌ์ Allow CORS: Access-Control-Allow-Origin์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ํ์ง๋ง ๋ง ๊ทธ๋๋ก ๋ก์ปฌ์์๋ง ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ฒฝ์ด ๋ฌ๋ผ์ง๋ฉด ์ ์ฉ์ด ์๋๋ฏ๋ก ์์๋ฐฉํธ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋๋ฒ์งธ๋ก๋ ์๋ฒ์์ ์์์ ์ธ๊ธํ Access-Control-Allow-Origin ์๋ตํค๋๋ฅผ ์ค์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋๋ CORS ๋ฏธ๋ค์จ์ด๋ฅผ ์ค์นํ์ฌ ํด๊ฒฐํ๋ค. npm install cors
๋ง์ง๋ง์ผ๋ก๋ proxy
๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ์ค์ ํด๋ผ์ด์ธํธ์์ cors๋ฅผ ์ง์ ์ค์ ๊ฐ๋ฅํ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ฌ์ฉํ๊ณ ์๋ค.
์ฆ, ํด๋ผ์ด์ธํธ์์ ๋ฐ๋ก ๋ฐฑ์๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ, ํด๋ผ์ด์ธํธ์์ ํด๋ผ์ด์ธํธ์๋ฒ๋ก, ํด๋ผ์ด์ธํธ ์๋ฒ์์ ๋ค์ ๋ฐฑ์๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด๋ค.