CORS

๊น€๋‚จ๊ฒฝยท2022๋…„ 12์›” 8์ผ

server

๋ชฉ๋ก ๋ณด๊ธฐ
2/7

์˜๋ฏธ

๐Ÿ’ก SOP์˜ ์˜ˆ์™ธ๋ฅผ ๋‘๋Š” ๊ฒƒ
๐Ÿ’ก ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค(์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๋„ api ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
CORS๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ

Origin ํ—ค๋”์— ์ž์‹ ์˜ Origin์„ ์„ค์ •ํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด
์‘๋‹ต์˜ Access-Control-Allow-Origin ํ—ค๋”์— ์„ค์ •๋œ Origin์˜ ๋ชฉ๋ก์—
์š”์ฒญ์˜ Origin ํ—ค๋” ๊ฐ’์ด ํฌํ•จ๋˜๋Š”์ง€ ๊ฒ€์‚ฌ

Origin?

๐Ÿ’ก URL์—์„œ ํ”„๋กœํ† ์ฝœ, ๋„๋ฉ”์ธ(ํ˜ธ์ŠคํŠธ), ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ•ฉ์นœ ๋ถ€๋ถ„

https://www.naver.com:443

SOP?

๐Ÿ’ก ๋™์ผํ•œ Origin์œผ๋กœ๋งŒ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ
๐Ÿ’ก ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์™€์˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ฅผ ์ œํ•œ

๋™์ž‘๋ฐฉ์‹

๐Ÿ“— ํ”„๋ฆฌ ํ”Œ๋ผ์ดํŠธ ์š”์ฒญ
OPTIONS ๋ฉ”์†Œ๋“œ๋กœ ์‚ฌ์ „ ์š”์ฒญ์„ ๋ณด๋‚ด ํ•ด๋‹น ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค์— ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

-๋ฏธ๋ฆฌ ๋ณด๋‚ด์„œ ๊ฐœ๋žต์ ์œผ๋กœ ํ™•์ธ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ธก๋ฉด์—์„œ ํšจ์œจ์ 
-CORS ๋Œ€๋น„๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„œ๋ฒ„ ๋ณดํ˜ธ ๊ฐ€๋Šฅ

ํด๋ผ์ด์–ธํŠธ -(์‹ค์ œ ์š”์ฒญ)-> ๋ธŒ๋ผ์šฐ์ € -(ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ request)-> ์„œ๋ฒ„
ํด๋ผ์ด์–ธํŠธ --- ๋ธŒ๋ผ์šฐ์ € <-(response)- ์„œ๋ฒ„
ํด๋ผ์ด์–ธํŠธ --- ๋ธŒ๋ผ์šฐ์ € -(์‹ค์ œ ์š”์ฒญ)-> ์„œ๋ฒ„
ํด๋ผ์ด์–ธํŠธ <-(response)- ๋ธŒ๋ผ์šฐ์ € <-(response)- ์„œ๋ฒ„

๐Ÿ“— ๋‹จ์ˆœ ์š”์ฒญ

  1. ๋ฉ”์†Œ๋“œ๊ฐ€ GET, HEAD, POST ์ค‘ ํ•˜๋‚˜
  2. Accept, Accept-Language, Content-Language, Content-Type(application/x-www-form-urlencoded, multipart/form-data, text/plain ๊ฐ’๋งŒ ํ—ˆ์šฉ) ํ—ค๋”์˜ ๊ฐ’๋งŒ ์ˆ˜๋™์œผ๋กœ ์„ค์ •

๐Ÿ“— ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ์š”์ฒญ
์ธ์ฆ์ •๋ณด๋ž€ ์ฟ ํ‚ค(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) ์ดํ•ดํ•˜๊ธฐ

profile
๊ธฐ๋ณธ์— ์ถฉ์‹คํ•˜๋ฉฐ ์•ž์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š”

0๊ฐœ์˜ ๋Œ“๊ธ€