: ๋จผ์ , CORS์์์ Origin๋? ํ๊ตญ๋ง๋ก๋ '์ถ์ฒ'๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ธ๋ฐ,
์ด๋ URL, ๋๋ฉ์ธ ๋ฑ๊ณผ ๋น์ทํด ๋ณด์ด์ง๋ง ์์ฐํ ์๋ฏธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํ์คํ ์๊ณ ๋์ด๊ฐ๋ ๊ฒ์ด ์ข๋ค.
Origin์ URL์์์ ํ๋กํ ์ฝ, ๋๋ฉ์ธ, ํฌํธ ๋ฒํธ๋ฅผ ํฉ์น ๋ถ๋ถ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ URL์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด
https://
naver.com
:80
https://naver.com:80
Origin :
https://naver.com:80
: CORS์ ๊ธฐ๋ณธ์ ์ธ ๋์ ์๋ฆฌ๋ ๋จ์ํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ Origin์ผ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ Origin
ํค๋์ ์์ ์ Origin์ ์ค์ ํ๊ณ ,
์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ผ๋ฉด ์๋ต์ Allow-Control-Allow-Origin
ํค๋์ ์ค์ ๋ Origin์ ๋ชฉ๋ก์ ์์ฒญ์ Origin
ํค๋ ๊ฐ์ด ํฌํจ๋๋์ง ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค.
์ฆ, CORS ์์ฒญ์ ์ํด์๋ ์๋ฒ์์์ ์๋ต์ Allow-Control-Allow-Origin
ํค๋์ ํ์ฉ๋๋ Origin์ ๋ชฉ๋ก ํน์์์ผ๋์นด๋(*
)๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
์์ผ๋์นด๋(
*
)๋ ๋ชจ๋ Origin์ ํ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ ํน์ ๊ธฐํธ
CORS ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง์ ์ ํ์ผ๋ก ๋๋ ๋ณผ ์ ์๋ค.
๋จ์ ์์ฒญ(Simple Request)์ ๊ณต์ ์ฉ์ด๊ฐ ์๋, MDN์์ ์ฌ์ฉํ ์ฉ์ด๋ฅผ ๊ฐ์ ธ์จ ๊ฒ์ด๋ค.
๋จ์ ์์ฒญ์ ํํ ์ ํ์ ์์ฒญ์ด ์๋๋ฉฐ, ๋จ์ ์์ฒญ์ด ๋๊ธฐ ์ํ ์กฐ๊ฑด์ด ๋งค์ฐ ๊น๋ค๋กญ๋ค.
์์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋จ์ ์์ฒญ์ ์์ ํ ์์ฒญ์ผ๋ก ์ทจ๊ธ๋์ด, ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ์ด ํ์ ์์ด ๋จ ํ ๋ฒ์ ์์ฒญ๋ง์ ์ ์กํ๋ค.
์ฆ, ์์์ ์ธ๊ธํ CORS์ ๊ธฐ๋ณธ์ ์ธ ๋์ ์๋ฆฌ๋ฅผ ๊ทธ๋๋ ๋ฐ๋ฅธ๋ค. ๋ค๋ฅธ Origin์ผ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ Origin
ํค๋์ ์์ ์ Origin์
์ค์ ํ๊ณ , ์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ผ๋ฉด ์๋ต์ Allow-Control-Allow-Origin
ํค๋์ ์ค์ ๋ Origin์ ๋ชฉ๋ก์ ์์ฒญ์ Origin
ํค๋
๊ฐ์ด ํฌํจ๋๋์ง ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค.
[๊ทธ๋ฆผ] ๋จ์ ์์ฒญ
: ์๋ฒ์ ์ค์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ ์๋น ์์ฒญ์ ํด๋นํ๋ ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ (Prefilght Request)์ ๋จผ์ ๋ณด๋ด์ ์ค์ ์์ฒญ์ด
์ ์กํ๊ธฐ์ ์์ ํ์ง ํ์ธํ๋ค. ๋ง์ฝ ์์ ํ ์์ฒญ์ด๋ผ๊ณ ํ์ธ์ด ๋๋ฉด, ๊ทธ๋์์ผ ์ค์ ์์ฒญ์ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
ํ๋ฆฌํ๋ผ์ดํธ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
OPTIONS
๋ฅผ ์ฌ์ฉํ๋ค.Origin
ํค๋์ ์์ ์ Origin์ ์ค์ ํ๋ค.Access-Control-Request-Methods
ํค๋์ ์ค์ ์์ฒญ์ ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ค์ ํ๋ค.Access-Control-Request-Headers
ํค๋์ ์ค์ ์์ฒญ์ ์ฌ์ฉํ ํค๋๋ค์ ์ค์ ํ๋ค.์๋ฒ๋ ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง ์๋ต์ ์ ๊ณตํด์ผ ํ๋ค.
Access-Control-Allow-Origin
ํค๋์ ํ์ฉ๋๋ Origin๋ค์ ๋ชฉ๋ก ํน์ ์์ผ๋์นด๋(*
)๋ฅผ ์ค์ ํ๋ค.Access-Control-Allow-Methods
ํค๋์ ํ์ฉ๋๋ ๋ฉ์๋๋ค์ ๋ชฉ๋ก์ ์ค์ ํ๋ค.Access-Control-Allow-Headers
ํค๋์ ํ์ฉ๋๋ ํค๋๋ค์ ๋ชฉ๋ก์ ์ค์ ํ๋ค.Access-Control-Max-Age
ํค๋์ ํด๋น ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ์ด ๋ธ๋ผ์ฐ์ ์ ์บ์ ๋ ์ ์๋ ์๊ฐ์ ์ด ๋จ์๋ก ์ค์ ํ๋ค.
์๋ต์ ๋ฐ๊ณ ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ด ์๋ต์ ์ ๋ณด๋ฅผ ์์ ์ด ์ ์กํ ์์ฒญ์ ์ ๋ณด๊ณผ ๋น๊ตํ์ฌ ์ค์ ์์ฒญ์ ์์ ์ฑ์ ๊ฒ์ฌํ๋ค. ๋ง์ฝ์ด ์์ ์ฑ ๊ฒ์ฌ์ ํต๊ณผํ๊ฒ ๋๋ฉด, ๊ทธ๋์์ผ ์ค์ ์์ฒญ์ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
[๊ทธ๋ฆผ] ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ (Prefilght Request)