Home Study | CS CORS
Post
Cancel

Study | CS CORS

CORS ๐ŸŒŠ

๋ชฉ์ฐจ

  1. CORS๊ฐ€ ๋ญ”๊ฐ€์š”?
    ย ย - Cross Origin Resource Sharing์˜ ์•ฝ์ž๋กœ, ๊ต์ฐจ ์ถœ์ฒ˜ ๊ณต์œ ๋ฅผ ์˜๋ฏธํ•จ
    ย ย - ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ์ถœ์ฒ˜๊ฐ€ ์ž์‹ ์ด ์†ํ•œ ์ถœ์ฒ˜๊ฐ€ ์•„๋‹Œ, ๋‹ค๋ฅธ ์ถœ์ฒ˜์—ฌ๋„ ์„œ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ถœ์ฒ˜๋ผ๋ฉด ์š”์ฒญ์— ๋Œ€ํ•ด ํ—ˆ์šฉํ•ด์ฃผ๋Š” ์‘๋‹ต ํ—ค๋”๋ฅผ ๋ณด๋‚ด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค
  2. CORS๋ฅผ ๊ฒช๊ณ  ์ง์ ‘ ํ•ด๊ฒฐํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ๋งํ•ด์ฃผ์„ธ์š”
    ย ย 1. ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์™€ ๋น ๋ฅด๊ฒŒ ์†Œํ†ตํ•จ
    ย ย 2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ํ”„๋ก์‹œ ์„ค์ •
    ย ย 3. ํ”„๋ก์‹œ ์„œ๋ฒ„ ๊ตฌ์ถ•


1. CORS

  1. CORS๊ฐ€ ๋ญ”๊ฐ€์š”?

    • Cross Origin Resource Sharing์˜ ์•ฝ์ž๋กœ, ๊ต์ฐจ ์ถœ์ฒ˜ ๊ณต์œ 
    • Origin์€ โ‘  scheme(ํ”„๋กœํ† ์ฝœ), โ‘ก host(๋„๋ฉ”์ธ), โ‘ข port ๋กœ ์ด๋ฃจ์–ด์ง„ URL์„ ์˜๋ฏธ
    • ์ž์‹ ์ด ์†ํ•œ ์ถœ์ฒ˜(Origin)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜(Origin)์— API๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด ์š”์ฒญ์œผ๋กœ ๋„˜์–ด์˜ค๋Š” ๊ฒฝ๊ณผ๊ฐ€ ์•ˆ์ „ํ•œ์ง€ ํŒ๋‹จํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ์ถœ์ฒ˜๊ฐ€ ์ž์‹ ์ด ์†ํ•œ ์ถœ์ฒ˜๊ฐ€ ์•„๋‹Œ, ๋‹ค๋ฅธ ์ถœ์ฒ˜์—ฌ๋„ ์„œ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ถœ์ฒ˜๋ผ๋ฉด ์š”์ฒญ์— ๋Œ€ํ•ด ํ—ˆ์šฉํ•ด์ฃผ๋Š” ์‘๋‹ต ํ—ค๋”๋ฅผ ๋ณด๋‚ด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค
    • ๋ชจ๋“  ์„œ๋ฒ„๋“ค์ด ๋‹ค CORS๋ฅผ ์ธ์ง€ํ•˜์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฑฐ๋ถ€ํ–ˆ๋”๋ผ๋„ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์š”์ฒญ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ์š”์ฒญ(CORS)์„ ์ฒ˜๋ฆฌํ•จ

    • ์‹ค์ œ ์š”์ฒญ์‹œ : ๊ฐ™์€ Origin์—์„œ http ํ†ต์‹ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ ์•Œ์•„์„œ cookie๊ฐ€ request header์— ๋“ค์–ด๊ฐ€์ง€๋งŒ, ๊ต์ฐจ ์ถœ์ฒ˜๋กœ ์š”์ฒญํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Œ

      • Origin์ด ๋‹ค๋ฅธ http ํ†ต์‹ ์—์„œ๋Š” request header์— ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—๊ฒŒ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋‚ด๊ฐ€ ์–ด๋–ค ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ง€ ์•Œ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ์Œ
      1
      2
      
      ํ”„๋ก ํŠธ > WithCredentials: true
      ์„œ๋ฒ„ > Access-Control-Allow-Credentials: true
      


  2. CORS๋ฅผ ๊ฒช๊ณ  ์ง์ ‘ ํ•ด๊ฒฐํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ๋งํ•ด์ฃผ์„ธ์š”

    1. ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์™€ ๋น ๋ฅด๊ฒŒ ์†Œํ†ตํ•จ

      • ์ถœ์ฒ˜๊ฐ€ ์• ์ดˆ๋ถ€ํ„ฐ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋„๋ก ์„ค์ •์ด ๋๋‹ค๋ฉด, ์˜ต์…˜๊ณผ ์‘๋‹ต ํ—ค๋”๋ฅผ ๊นœ๋นกํ•˜๊ณ  ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ธํŒ…ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์ •์ƒ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์ง€ ์•Š์Œ
      • ๋”ฐ๋ผ์„œ ๋ชจ๋“  ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์— ์•ž์„œ, ์ผ๋‹จ ๋จผ์ € ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์™€ ๋น ๋ฅด๊ฒŒ ์†Œํ†ตํ•ด๋ด…์‹œ๋‹ค.
    2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ํ”„๋ก์‹œ ์„ค์ •

      • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์žˆ์–ด์„œ ์„ธํŒ…์„ ์ž˜ ํ•ด๋†“์€ ์ƒํƒœ์ด๊ณ , ์„œ๋ฒ„์˜ ์„ธํŒ…์€ ์™„๋ฒฝํ•œ๋ฐ ๊ทธ๋Ÿผ์—๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ ํ”„๋ก์‹œ ์„ค์ •๋„ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Œ
      • ์ด๋Š” CRA, Vue-cli, Webpack-dev-server ๋“ฑ์„ ํ†ตํ•ด ์„ธํŒ…์„ ์ง์ ‘ํ•ด์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ์ž ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ 
    3. ํ”„๋ก์‹œ ์„œ๋ฒ„ ๊ตฌ์ถ•

      • CORS๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก์‹œ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ํ†ตํ•ด ์ˆ˜์ •(๋ชจ๋“  ๋ฐฉ๋ฒ•์ด ๋จนํžˆ์ง€ ์•Š์„ ๋•Œ)
      • ๋‹จ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ค„ ์•Œ์•„์•ผ ํ•˜๊ณ  ์ด๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ , ์ธ์  ์ž์›์ด ์†Œ์š”๋จ






์ถœ์ฒ˜

CORS 1
CORS ์งฑ ์ž์„ธํ•œ ์„ค๋ช…
CORS ๋™์ž‘๊ณผ์ • ์ฐธ๊ณ 

This post is licensed under CC BY 4.0 by the author.

Study | CS ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

Java Script | ๋ฐฐ์—ด