-
Notifications
You must be signed in to change notification settings - Fork 5
CORS
๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (Cross-Origin Resource Sharing, CORS)๋ ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ, ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์์ ์๋ ค์ฃผ๋ ์ฒด์ ์ด๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์, ๋๋ฉ์ธ ์ด๋ฆ์ด ์๋ก ๋ค๋ฅธ ์ฌ์ดํธ๊ฐ์ api ์์ฒญ์ ํ ๋ CORS๋ฅผ ์ค์ ํ์ง ์์๋ค๋ฉด CORS ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
- HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋, ์์ฒญ ํค๋(request ํค๋)์ Origin ํ๋์ ์์ฒญ์ ๋ณด๋ด๋ ์ถ์ฒ๋ฅผ ๋ด์ ์ ์กํ๋ค.
- ์์ ์์์์๋ foo.com ์ ๋ด์ ์ ์กํ๋ค
- ์๋ฒ์์๋ ์์ฒญ์ ๋ํ ์๋ต์ ํ๋๋ฐ, ์๋ต ํค๋ (response header)์ Access-Control-Allow-Origin ์ด๋ผ๋ ๊ฐ์ '์ด ๋ฆฌ์์ค๋ฅผ ์ ๊ทผํ๋ ๊ฒ์ด ํ์ฉ๋ ์ถ์ฒ'๋ฅผ ๋ด๋ ค์ค๋ค. ์ดํ ์๋ต์ ๋ฐ์ ๋ธ๋ผ์ฐ์ ๋ ์์ ์ด ๋ณด๋๋ ์์ฒญ์ Origin๊ณผ ์๋ฒ๊ฐ ๋ณด๋ด์ค ์๋ต์ Access-Control-Allow-Origin์ ๋น๊ตํด ๋ณธ ํ ์ด ์๋ต์ด ์ ์ํ ์๋ต์ธ์ง ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์์ ์์์์๋ Access-Control-Allow-Origin์ foo.com์ ๋ด์์ค๋ค.
request ํค๋์๋ Origin์ด responseํค๋์๋ Acess-Control-Allow-Originํค๋๊ฐ ์์ด์ผ ํ๋ค.
: ์์ฒญ์ ํ๋ฒ์ ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ์๋น ์์ฒญ๊ณผ ๋ณธ ์์ฒญ์ผ๋ก ๋๋์ด์ ์๋ฒ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. ๋ณธ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ๋ฏธ๋ฆฌ ์๋น๋ก ๋ณด๋ด๋ ์์ฒญ์ Preflight๋ผ๊ณ ํ๋ฉฐ, HTTP ๋ฉ์๋ ์ค ํ๋์ธ OPTIONS ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ์๋น ์์ฒญ์ ํจ์ผ๋ก์จ ๋ณธ ์์ฒญ์ ๋ํ ์์ ์ฑ์ ํ์ธ ํ ์ ์๋ค. ์๋น ์์ฒญ์ผ๋ก ์๋ฒ๋ ํ์ฌ ์์ ์ด ์ด๋ค ๊ฒ๋ค์ ํ์ฉํ๊ณ , ์ด๋ค ๊ฒ๋ค(์ถ์ฒ)๋ฅผ ๊ธ์งํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์๋ต ํค๋์ ๋ด์์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ค์ ๋ณด๋ด์ค๋ค.
Preflight ์์ฒญ๊ณผ๋ ๋ฌ๋ฆฌ, ์๋น ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ , ์๋ฒ์๊ฒ ๋ฐ๋ก ๋ณธ ์์ฒญ์ ์ ์กํ๋ค
์ด๋ ์๋ฒ์ ์๋ตํด๋์ Access-Control-Allow-Origin ๊ณผ ๊ฐ์ ๊ฐ์ ๋ณด๋ด์ฃผ๋ฉด ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ CORS ์ ์ฑ ์๋ฐ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค
์๋ฐ์ฌ๋ถ
- ์์ฒญ์ ๋ฉ์๋๋ GET, HEAD, POST ์ค ํ๋์ฌ์ผ ํ๋ค
-
Accept
,ยAccept-Language
,ยContent-Language
,ยContent-Type
,ยDPR
,ยDownlink
,ยSave-Data
,ยViewport-Width
,ยWidth
ย ์ธ์ ๋ค๋ฅธ ํค๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค. - ๋ง์ฝย **
Content-Type
**๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ยapplication/x-www-form-urlencoded
,ยmultipart/form-data
,ย **text/plain
**๋ง ํ์ฉ๋๋ค.
์ธ์ฆ๋ ์์ฒญ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ค๋ฅธ ์ถ์ฒ ๊ฐ ํต์ ์ ์ข ๋ ๋ณด์์ ๊ฐํํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ๋น๋๊ธฐ ๋ฆฌ์์ค ์์ฒญ API์ธย XMLHttpRequest
ย ๊ฐ์ฒด๋ย **fetch API
**๋ ๋ณ๋์ ์ต์
์์ด ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค ์ ๋ณด๋ ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ํค๋๋ฅผ ํจ๋ถ๋ก ์์ฒญ์ ๋ด์ง ์๋๋ค. ์ด๋ ์์ฒญ์ ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๊ฒ ํด์ฃผ๋ ์ต์
์ด ๋ฐ๋กย credentials
ย ์ต์
์ด๋ค.
credentials๋ ์ธ๊ฐ์ง ์ต์ ์ ๊ฐ์ง๊ณ ์๋ค.
-
same-origin
ย : ๊ฐ์ ์ถ์ฒ ๊ฐ ์์ฒญ์๋ง ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋ค. -
include
ย : ๋ชจ๋ ์์ฒญ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋ค. -
omit
ย - : ๋ชจ๋ ์์ฒญ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ง ์๋๋ค.
๋ค๋ฅธ ์ถ์ฒ ์ฌ์ดํธ๋ก๋ถํฐ ์ฟ ํค์ ๊ฐ์ ์ธ์ฆ์ ๋ณด๋ฅผ ํฌํจ์ํค๊ณ ์ํ ๋ credentials: 'include' ์ต์
์ ๋ฃ์ด์ค๋ค.
๋์ ์กฐ๊ฑด
-
Access-Control-Allow-Origin: *
์ด๋ฉด ์๋๋ฉฐ ๋ช ์์ ์ผ๋ก URL์ ์ ์ด์ผํ๋ค - ์๋ต ํค๋์๋ ๋ฐ๋์ Access-Control-Allow-Credentials: true ๊ฐ ์กด์ฌํด์ผํ๋ค.
์ถ์ฒ :
- IntersectionObserver
- B-Tree
- Web Server & Web Application Server
- Query Optimization (1)
- Query Optimization (2)
- M1 Mac์์ link preview generator ์ค์น ์ค ๋ฐ์ํ๋ ์ค๋ฅ
- CORS
- react-router-dom
- Artillery: Performance testing tool
- JWT
- LinkPreview
- SWR
- ์ฟผ๋ฆฌ์ฑ๋ฅํฅ์&๋ฌดํ์คํฌ๋กค
- 10์ 26์ผ ํ์์ผ
- 10์ 27์ผ ์์์ผ
- 10์ 28์ผ ๋ชฉ์์ผ
- 11์ 1์ผ ์์์ผ
- 11์ 2์ผ ํ์์ผ
- 11์ 3์ผ ์์์ผ
- 11์ 4์ผ ๋ชฉ์์ผ
- 11์ 9์ผ ํ์์ผ
- 11์ 10์ผ ์์์ผ
- 11์ 11์ผ ๋ชฉ์์ผ
- 11์ 16์ผ ํ์์ผ
- 11์ 17์ผ ์์์ผ
- 11์ 18์ผ ๋ชฉ์์ผ
- 11์ 23์ผ ํ์์ผ
- 11์ 24์ผ ์์์ผ
- 11์ 25์ผ ๋ชฉ์์ผ
- 11์ 30์ผ ํ์์ผ
- 12์ 1์ผ ์์์ผ
- 12์ 2์ผ ๋ชฉ์์ผ