๐ก SOP์ ์์ธ๋ฅผ ๋๋ ๊ฒ
๐ก ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค(์๋ฅผ ๋ค์ด ์ง๋ api ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋
CORS๊ฐ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์
Origin ํค๋์ ์์ ์ Origin์ ์ค์ ํ๊ณ , ์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ผ๋ฉด
์๋ต์ Access-Control-Allow-Origin ํค๋์ ์ค์ ๋ Origin์ ๋ชฉ๋ก์
์์ฒญ์ Origin ํค๋ ๊ฐ์ด ํฌํจ๋๋์ง ๊ฒ์ฌ
๐ก URL์์ ํ๋กํ ์ฝ, ๋๋ฉ์ธ(ํธ์คํธ), ํฌํธ ๋ฒํธ๋ฅผ ํฉ์น ๋ถ๋ถ
๐ก ๋์ผํ Origin์ผ๋ก๋ง ์์ฒญ์ ๋ณด๋ผ ์ ์๊ฒ ํ๋ ๊ฒ
๐ก ๋ค๋ฅธ ์ฌ์ดํธ์์ ๋ฆฌ์์ค ๊ณต์ ๋ฅผ ์ ํ
๐ ํ๋ฆฌ ํ๋ผ์ดํธ ์์ฒญ
OPTIONS ๋ฉ์๋๋ก ์ฌ์ ์์ฒญ์ ๋ณด๋ด ํด๋น ์ถ์ฒ์ ๋ฆฌ์์ค์ ๊ถํ์ด ์๋์ง ํ์ธํ๋ ๊ฒ
-๋ฏธ๋ฆฌ ๋ณด๋ด์ ๊ฐ๋ต์ ์ผ๋ก ํ์ธ ํ๋ ๊ฒ์ผ๋ก ๋ฆฌ์์ค ์ธก๋ฉด์์ ํจ์จ์
-CORS ๋๋น๊ฐ ๋์ด์์ง ์์ ๊ฒฝ์ฐ ์๋ฒ ๋ณดํธ ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ -(์ค์ ์์ฒญ)-> ๋ธ๋ผ์ฐ์ -(ํ๋ฆฌํ๋ผ์ดํธ request)-> ์๋ฒ
ํด๋ผ์ด์ธํธ --- ๋ธ๋ผ์ฐ์ <-(response)- ์๋ฒ
ํด๋ผ์ด์ธํธ --- ๋ธ๋ผ์ฐ์ -(์ค์ ์์ฒญ)-> ์๋ฒ
ํด๋ผ์ด์ธํธ <-(response)- ๋ธ๋ผ์ฐ์ <-(response)- ์๋ฒ
๐ ๋จ์ ์์ฒญ
๐ ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ ์์ฒญ
์ธ์ฆ์ ๋ณด๋ ์ฟ ํค(Cookie) ํน์ Authorization ํค๋์ ์ค์ ํ๋ ํ ํฐ ๊ฐ์ ์๋ฏธ
์ธ์ฆ์ ๋ณด๋ฅผ ๋ณด๋ด๊ธฐ ์ํด์๋ ํด๋ผ์ด์ธํธ์์ ๋ณ๋์ ์ค์ ์ด ํ์ํจ
XMLHttpRequest, jQuery์ ajax, ๋๋ axios
withCredentials : true
fetch API
Access-Control-Allow-Credentials : true
์ฝ๋์คํ
์ด์ธ ๊ต๊ณผ์
[NODE] ๐ cors ๋ชจ๋ - CORS ๊ฐํธ ์ค์ ํ๊ธฐ
SOP(Same-Origin-Policy)
CORS (Cross Origin Resource Sharing) ์ดํดํ๊ธฐ