์ฐ์ CORS์ ๋ํด ์์๋ณด๊ธฐ ์ SOP (Same Origin Policy) ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ค๋ฅธ *์ถ์ฒ์ resource ์ฌ์ฉ์ ๋ํ ์ ํ์ ๋๋ ๋ณด์ ๋ฐฉ์
*์ถ์ฒ: ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ๊ฐ ๊ฐ์ผ๋ฉด ๋์ผ ์ถ์ฒ
๋ง์ฝ ์ํ์ฌ์ดํธ์ ๋ก๊ทธ์ธํ์ฌ ์ธ์ฆํ ํฐ์ ๋ฐ์ ํ, ๋ค๋ฅธ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ค๋ฉด ๊ทธ ํ ํฐ์ด ์ฒจ๋ถ๋์ด ๋ณด๋ด์ง ์ ์์ต๋๋ค. ๋ณด์์์ผ๋ก ๋งค์ฐ ์ข์ง ์๊ฒ ์ฃ ? ๊ทธ๋ ๊ธฐ์ ๋ค๋ฅธ ์ถ์ฒ๊ฐ์ resource ์ฌ์ฉ์ ์ ํ์ ๋๋ ๊ฒ์ ๋๋ค.
์ต๊ทผ์๋ ํ๋ก ํธ ๊ฐ๋ฐ๊ณผ ๋ฐฑ ๊ฐ๋ฐ์ ๋ถ๋ฆฌ๋ก api๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ก์ต๋๋ค. ์ด๋ก ์ธํด ์๋ก ๋ค๋ฅธ ์ถ์ฒ ๊ฐ์ ํต์ ์ ํด์ผํ๋๋ฐ์! ์ด๋ฅผ ์ํด CORS๊ฐ ํ์ํฉ๋๋ค.
HTTP ํค๋๋ฅผ ์ด์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ์ถ์ฒ์ resouce ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ.
- Simple Request
- Preflight Request
- Credntialed Request
๋ค์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด Simple Request๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
1) GET, POSTT, HEAD
2) POST ๋ฐฉ์์ผ ๊ฒฝ์ฐ conte-type์ด ์๋ ์ ์ค ํ๋์ฌ์ผ ํจ.
- application/x-www-form-unlencoded
- multipart/form-data
- text/plain
3) Header๋ Accept, Accept-Language, Content-Language, Content-Type๋ง ์ ์ฉ
[Preflight Request ๊ณผ์ ]
1) OPTIONS ๋ฉ์๋๋ฅผ ํตํด ๋ค๋ฅธ ๋๋ฉ์ธ์ resource์ ์์ฒญ์ด ๊ฐ๋ฅํ์ง ํ์ธ ์์
2) ์์ฒญ ๊ฐ๋ฅํ๋ค๋ฉด ์ค์ ์์ฒญ(Actual Request) ๋ณด๋ด๊ธฐ
์ธ์ฆ๊ด๋ จ Header๋ฅผ ํฌํจํ ๋ ์ฌ์ฉ
Access-Control-Allow-Credential : true
Access-Control-Allow-Origin : "http://localhost:8081"
๐จ์ฃผ์
Access-Control-Allow-Origin : "*" ๋ฅผ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ผญ "http://localhost:8081" ์ ๊ฐ์ ์ ํํ ์ฃผ์๋ฅผ ๋งคํํด ์ฃผ์ด์ผ ํฉ๋๋ค.
1) ์น ๋ธ๋ผ์ฐ์ ์คํ ์ต์
์ด๋ ํ๋ฌ๊ทธ์ธ์ ํตํ SOP ํํผํ๊ธฐ
- SOP๋ ๋ธ๋ผ์ฐ์ ์์ ์์๋ก ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์ SOP๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ๋ฉ๋๋ค.
2) json ๋ฐฉ์์ผ๋ก json ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด๋ css ํ์ผ์ SOP์ ์ํฅ์ ๋ฐ์ง ์๊ณ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ json ํ์์ผ๋ก ํ์ฑํค ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
.NET์ ์ด์ฉํ์ฌ ํ์ฉํ ์ฃผ์๋ฅผ ๋งคํํฉ๋๋ค.