CORS(Cross-Origin Resource Sharing)๋ ํ ๋๋ฉ์ธ์ ์น ํ์ด์ง๊ฐ ๋ค๋ฅธ ๋๋ฉ์ธ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๊ท์ ํ๋ ์น ๋ธ๋ผ์ฐ์ ์ ๋ณด์ ๊ธฐ๋ฅ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ๋ณด์ ๋ฌธ์ ๋ก ์ธํด ์ด๋ฌํ ์๋ณธ ๊ฐ ์์ฒญ์ ์ ํํฉ๋๋ค. ์ ์ฑ JavaScript๊ฐ ์น ์ฌ์ดํธ์ ์ฃผ์ ๋๋ฉด ๊ณต๊ฒฉ์๊ฐ ์ฌ์ฉ์๋ฅผ ๊ฐ์ฅํ์ฌ ์๋ฒ์ ๋ฌด๋จ ์์ฒญ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ์๋ฐฉ ์กฐ์น๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ๋ ์น ํ์ด์ง๊ฐ ์น ํ์ด์ง๋ฅผ ์ ๊ณตํ ๊ฒ๊ณผ ๋ค๋ฅธ ๋๋ฉ์ธ/ํฌํธ ์กฐํฉ์ ์์ฒญํ๋ ๊ฒ์ ์ ํํ๋ ๋์ผ ์ถ์ฒ ์ ์ฑ ์ ์ํํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์ปดํจํฐ์ ๋ฐ์ดํฐ์ ๋ํ ๋ฌด๋จ ์ก์ธ์ค ๋ฐ ์กฐ์์ ํฌํจํ ๋ณด์ ์ํ์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค.
๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ํ๋ก์ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ํด๋ผ์ด์ธํธ ์น ํ์ด์ง์์ ๋ฐฑ์๋ ์๋ฒ๋ก ์ง์ ์์ฒญ์ ๋ณด๋ด๋ ๋์ ํด๋ผ์ด์ธํธ ํ์ด์ง๋ ์์ฒด ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ ์๋ฒ๋ ์์ฒญ์ ๋ฐฑ์๋ ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค. ์๋ฒ ๊ฐ ํต์ ์๋ ์ด๋ฌํ ์ ํ์ด ์ ์ฉ๋์ง ์์ผ๋ฏ๋ก ์ด ์ ๊ทผ ๋ฐฉ์์ CORS ์ ์ฑ ์ ์ฐํํฉ๋๋ค.
์๋ฒ ์ธก์์ CORS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
@CrossOrigin ์ฃผ์ ์ฌ์ฉ:
์ปจํธ๋กค๋ฌ ์์ค์ ๋งคํ ๋ฐฉ๋ฒ์ @CrossOrigin ์ฃผ์์ ์ ์ฉํฉ๋๋ค. ์ด ์ฃผ์์ ํน์ ์๋ํฌ์ธํธ์ ๋ํ Cross-Origin ๋ฆฌ์์ค ๊ณต์ ์ ์ฑ
์ ์ ์ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
CorsFilter ์ฌ์ฉ:
์๋ธ๋ฆฟ ํํฐ ์ธํฐํ์ด์ค ์ญํ ์ ํ๋ CorsFilter๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํํฐ๋ ์๋ฒ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ฐจ๋จํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Expose-Headers ๋ฑ์ ํฌํจํ์ฌ ํ์ํ CORS ์ ์ฑ
๊ณผ ํค๋๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด๋ ์๋ณธ ๊ฐ์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.