์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ์๋ฐ
- Spring Data JDBC
- ์ปฌ๋ ์ ํ๋ ์์ํฌ
- HTML
- ์๋ฃ๊ตฌ์กฐ
- ๊ฑฐ๋ญ์ ๊ณฑ
- ์ฒซ๊ธ์๋๋ฌธ์
- spring data jpa
- ๋ฐ์ผ๋ฆฌ์ฝ๋ฉ
- ์ธํ ๋ฆฌ์ ์ด
- fibonacci
- ์๊ณ ๋ฆฌ์ฆ
- ๊นํ๋ธ
- ์คํ๋ง
- ํ์ดํ๋ก๊ทธ๋๋ฐ
- ๊ทธ๋ฆฌ๋
- ๋ฐฑ์๋
- testing
- CLI๋ช ๋ น์ด
- ๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ
- java
- ๊ณ์ฐ๊ธฐ๋ง๋ค๊ธฐ
- Spring Security
- ์ ๋ค๋ฆญ์ค
- FilterChain
- Publishing
- ๋ฌธ์์ด๋ค์ง๊ธฐ
- ํ๊ณ
- ๋ถํธ์บ ํ
- CSS
Archives
- Today
- Total
๋์ ๋ชจ์
CORS(Cross-Origin Resource Sharing) ๋ณธ๋ฌธ
๐ต SOP(Same-Origin Policy, ๋์ผ ์ถ์ฒ ์ ์ฑ )
- ‘๊ฐ์ ์ถ์ฒ์ ๋ฆฌ์์ค๋ง ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค’๋ ์ ์ฑ
- Origin(์ถ์ฒ): ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ
⇒ ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด ๋์ผํ ์ถ์ฒ๊ฐ ์๋
๐ SOP๊ฐ ํ์ํ๊ฒ ๋ ์ด์
- ๋ณด์์์ ์ด์
๐ BUT!
- ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ ์ผ์ด ๋ง์
๐ต CORS(Cross-Origin Resource Sharing, ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ )
- ์ถ๊ฐ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ถ์ฒ์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ถ์ฒ์ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์
- ๋ธ๋ผ์ฐ์ ๋ SOP์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค ๊ณต์ ๋ฅผ ๋ง์ง๋ง, CORS ์ฌ์ฉ์ ์ ๊ทผ ๊ถํ์ ์ป์ ์ ์์
๐ CORS ๋์ ๋ฐฉ์
- ๋จ์ ์์ฒญ (Simple Request)
- ์์ฒญ๊ณผ ์๋ต์ ํ๋ฒ์ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ
- ์กฐ๊ฑด์ด ๊น๋ค๋ก์
- ๋ฉ์๋: GET, HEAD, POST
- ์๋์ค์ ํค๋ ์ธ์ Accept, Accept-Language, Content-Language, Content-Type ํค๋ ๊ฐ๋ง ์๋์ผ๋ก ์ค์ ๊ฐ๋ฅ
- Content-Typeํค๋๋ application/x-www-form-urlencoded, multipart/form-data, text/plain ๊ฐ๋ง ํ์ฉ
- XMLHttpRequestUpload ๊ฐ์ฒด์ EventListener๊ฐ ์์ ๋
- ReadableStream ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋์ง ์์ ๋
- ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ (Pre-flight Request)
- ์ค์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ , OPTIONS ๋ฉ์๋๋ก ์ฌ์ ์์ฒญ์ ๋ณด๋ด ํด๋น ์ถ์ฒ ๋ฆฌ์์ค์ ์ ๊ทผ ๊ถํ์ด ์๋์ง๋ถํฐ ํ์ธํ๋ ๊ฒ
- ์ฌ์ ๊ถํ ํ์ธ์ ํ๊ณ ์ค์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์, ์ค์ ์์ฒญ์ ์ฒ์๋ถํฐ ํต์งธ๋ก ๋ณด๋ด๋ ๊ฒ๋ณด๋ค ๋ฆฌ์์ค ์ธก๋ฉด์์ ํจ์จ์
- ๋ง์ฝ ์์ฒญ์ ๋ณด๋ธ ์ถ์ฒ๊ฐ ์ ๊ทผ ๊ถํ์ด ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ์์ CORS ์๋ฌ๋ฅผ ๋์ฐ๊ฒ ๋๊ณ , ์ค์ ์์ฒญ์ ์ ๋ฌ๋์ง ์์
- ์ธ์ฆ์ ๋ณด๋ฅผ ํฌํจํ ์์ฒญ (Credentialed Request)
- ์์ฒญ ํค๋์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ ๋ณด๋ด๋ ์์ฒญ์ผ๋ก, ๋ณด์์ ๋ ๊ฐํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
- ์ถ์ฒ๊ฐ ๋ค๋ฅผ ๋: ํด๋ผ์ด์ธํธ ์๋ฒ ๋ชจ๋ CORS ์ค์ ์ด ํ์
- ํด๋ผ์ด์ธํธ ์ธก: ์์ฒญ ํค๋์ withCredentials: true ์ค์
- ์๋ฒ ์ธก: ์๋ต ํค๋์ Access-Control-Allow-Credentials: true๋ฅผ ๋ฃ์ด์ค์ผ ํจ
- ์๋ฒ ์ธก์์ Access-Control-Allow-Origin์ ์ค์ ํ ๋, ‘*’ ๋์ ์ง์ ์ ์ผ๋ก ๋ช ์๋ฅผ ํด์ค์ผ ํจ
- Credential Option
- same-origin(๊ธฐ๋ณธ๊ฐ): ๊ฐ์ ์ถ์ฒ(ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ๋ฒํธ) ์์ ํ์ฉ
- include: ๋ชจ๋ ์ธ์ฆ ์ ๋ณด ํฌํจ
- omit: ๋ชจ๋ ์ฟ ํค, ์ธ์ฆ ์ ๋ณด ๊ตํ ๋ถ๊ฐ
๐ต ์ ๋ฆฌ
- ๊ฐ์ ์ถ์ฒ(Same-Origin) ํ๋จ ๊ธฐ์ค: ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ๋ฒํธ๊ฐ ๊ฐ์
- CORS ์ ์ฑ ์ ์ถ์ฒ๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ HTTP ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ถํ์ ๋ถ์ฌํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ฃผ๋ ์ฒด์
- ์ถ์ฒ ๋น๊ต: ๋ธ๋ผ์ฐ์ ์ ๊ตฌํ
- CORS์ 3๊ฐ์ง ๋์ ๋ฐฉ๋ฒ: Simple Request, Prefilght Request, Credentialed Reqeust
โ Ref.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
https://medium.com/@x24mak/cross-origin-resource-sharing-cors-275e52b021b8
https://evan-moon.github.io/2020/05/21/about-cors/#cors๋ฅผ-ํด๊ฒฐํ -์-์๋-๋ฐฉ๋ฒ
https://velog.io/@jimmy0417/WEB-CORS-๊ฐ๋ ๊ณผ-์ ์ฉ-๋ฐฉ๋ฒ
Comments