CORS(Cross-Origin Resource Sharing)
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ same-origin policy(๋์ผ ์ถ์ฒ ์ ์ฑ )์ ๋ฐ๋ผ ์ ํ๋๋ ๋๋ฉ์ธ ๊ฐ ์์ ๊ณต์ ๋ฅผ ํ์ฉํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ
Same-Origin Policy(๋์ผ ์ถ์ฒ ์ ์ฑ
)
๋ธ๋ผ์ฐ์ ์์ ๋ณด์ ์์ ์ด์ ๋ก, ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋๋ฉ์ธ๊ณผ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๋๋ฉ์ธ์ด ๋์ผํด์ผํ๋ ๊ท์น์ผ๋ก, ์๋ฐฐ๋๋ ์ํฉ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค ์์ฒญ์ ์ฐจ๋จํ๊ฒ ๋๋ค.
Cross-Origin
cross-origin์ ์ข ๋ฅ๋ ์๋๋ก ์ ์๋๋ค.
๋ค๋ฅธ ๋๋ฉ์ธ (example.com - test.com)
๋ค๋ฅธ ํ์ ๋๋ฉ์ธ (example.com - store.example.com)
๋ค๋ฅธ ํฌํธ (example.com:80 - example.com:90)
๋ค๋ฅธ ํ๋กํ ์ฝ (https://example.com - http://example.com)
์ฌ๊ธฐ์ https://example.com
๊ณผ https://www.example.com
์ ๋ค๋ฅธ ๋๋ฉ์ธ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํ๋ค.
์์(๊ธฐ์ค http://store.ogufamily.com
)
http://store.ogufamily.com
)http://store.ogufamily.com/babyogu.html
same origin
path๋ง ๋ค๋ฅธ๊ฒฝ์ฐ
http://store.ogufamily.com/ogu.html
same origin
path๋ง ๋ค๋ฅธ๊ฒฝ์ฐ
https://store.ogufamily.com
cross origin
ํ๋กํ ์ฝ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ
http://store.ogufamily.com:81
cross origin
ํฌํธ๊ฐ ๋ค๋ฅธ๊ฒฝ์ฐ
http://news.ogufamily.com
cross origin
๋๋ฉ์ธ์ด ๋ค๋ฅธ๊ฒฝ์ฐ
CORS ์๋ ๋ฐฉ์
ํด๋ผ์ด์ธํธ๊ฐ ์น ํ์ด์ง์์ JavaScript๋ฅผ ํตํด ๋ค๋ฅธ ๋๋ฉ์ธ์ ๋ฆฌ์์ค(
cross-origin
) ์์ฒญ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ์ ๋ณด๋ผ ๋ HTTP ํค๋์ Origin ๊ฐ์ ๋ฃ์ด ์ ์ก
์๋ฒ์์ Origin ๊ฐ์ ํ์ธ
์๋ฒ์์ ์๋ต์
Access-Control-Allow-Origin
ํค๋๋ฅผ ํตํด ์์ฒญ์ ํ์ฉํ Origin์ ์ ์ก๋ธ๋ผ์ฐ์ ์์ ์๋ต์
Access-Control-Allow-Origin
ํค๋๋ฅผ ํ์ธํ์ฌ ์์ ์ ๋๋ฉ์ธ๊ณผ ์ผ์นํ๋์ง ํ์ธ
์์ ๊ณผ์ ์์ ์ผ์นํ๋ค๋ฉด ์ฑ๊ณต์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ฐ์์ฌ ์ ์๊ณ , ์ผ์นํ์ง ์๋๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ฌ ์๋์ ์๋ฌ๋ฅผ ํ์ธํ ์ ์๋ค.
์ธ์ด ๋ฐ ํ๋ ์์ํฌ ๋ณ๋ก ์ค์ ๋ฐฉ๋ฒ์ ๋ค๋ฅด์ง๋ง ์๋ฒ ์ชฝ์์ Origin ์ค์ ์ ํด์ฃผ์ด ๊ฐ๋จํ ํด๊ฒฐํ ์ ์๋ค.
Preflight
๋จ์ ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ ์กํ๋ ์์ฒญ์ด๋ก, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ๊ต์ ํ ๋ ํน์ ์กฐ๊ฑด์ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฃผ๋ก CORS์ ๊ด๋ จ๋ ์์ฒญ์์ ๋ฐ์ํ๋ฉฐ, ์๋ฒ์์ ํ์ฉ๋ ์์ฒญ์ธ์ง ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํด๋ผ์ด์ธํธ์์
OPTIONS /resource
์์ฒญ์Origin
ํค๋์ ํจ๊ป ์ ์ก์๋ฒ์์
Access-Control-*
ํค๋์ ํจ๊ป ์๋ต(์ฑ๊ณตํ๋ ๊ฒฝ์ฐ 200 OK)Access-Control-Allow-Origin
: ํ์ฉorigin
Access-Control-Allow-Methods
: ํ์ฉmethod
Access-Control-Allow-Headers
: ํ์ฉheader
Access-Control-Max-Age
: preflight ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ ์๊ฐ
ํด๋ผ์ด์ธํธ์์
Access-Control-Allow-Origin
ํค๋๋ฅผ ํ์ธํ์ฌ ์ค์ ๋ณธ ์์ฒญ์ ์ ์กํ ์ง ๊ฒฐ์ preflight ์ ํจ ์๊ฐ ๋์ ์บ์ฑํ์ฌ ๋ค์ ์์ฒญ๋ถํฐ๋ preflight ์์ฒญ์ ์๋ตํ๊ณ ๋ฐ๋ก ๋ณธ ์์ฒญ์ ์ ์ก
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?