ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CORS
    ์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ 2021. 7. 31. 16:17
    728x90

    ๐Ÿš€ CORS (Cross-Origin Resource Sharing : ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ž€?

    CORS ์ด์ „์— "๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…" ์„ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

    ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์ด๋ž€ "์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ๊ถŒํ•œ์— ์ œ์•ฝ์„ ๊ฑฐ๋Š” ๋ธŒ๋ผ์šฐ์ €๋‹จ์˜ ๋ณด์•ˆ ์ŠคํŽ™" ์ž…๋‹ˆ๋‹ค.

    CORS๋Š” ์ด ๋ณด์•ˆ ์ œ์•ฝ์‚ฌํ•ญ์„ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด W3C์—์„œ ๊ฐœ๋ฐœํ•œ ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค.

     

    ๐Ÿ‘ป ๊ต์ฐจ ์ถœ์ฒ˜

    ๋ธŒ๋ผ์šฐ์ ธ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž์‹ ์˜ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ)์™€ ๋‹ค๋ฅผ ๋•Œ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์— ์˜ํ•œ ๋ณด์•ˆ ์ •์ฑ…์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ๊ต์ฐจ ์ถœ์ฒ˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ˜„์žฌ์™€ ๋‹ค๋ฅธ ์ถœ์ฒ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ถœ์ฒ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๋น„๊ตํ•˜๋Š” ๊ฑธ๊นŒ์š”?

    ์ถœ์ฒ˜๋Š” ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๋ฅผ ํ•ฉ์นœ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

    ์ฆ‰, ๋ฆฌ์†Œ์Šค๊ฐ€ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ)์™€ ๋‹ค๋ฅผ ๋•Œ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์œผ๋กœ ์ธํ•ด ์ ‘๊ทผ ์ œ์•ฝ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    โ‚ฉ

     

     

    ๐Ÿ‘ป ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… ํ”„๋กœ์„ธ์Šค

    1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Origin ํ—ค๋”๋ฅผ ์š”์ฒญ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Origin ํ—ค๋”๋Š” Origin:https://www.example.appspot.com๊ณผ ๊ฐ™์ด ์„œ๋ฒ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค ์ถœ์ฒ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์˜ HTTP ๋ฉ”์„œ๋“œ์™€ Origin ํ—ค๋”์˜ ๊ฐ’์„ ๋Œ€์ƒ CORS ๊ตฌ์„ฑ์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ ๋ฐ ์ถœ์ฒ˜ ์ •๋ณด์™€ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด Access-Control-Allow-Origin ํ—ค๋”๋ฅผ ์‘๋‹ต์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Access-Control-Allow-Origin ํ—ค๋”๋Š” ์ดˆ๊ธฐ ์š”์ฒญ์— ์žˆ๋Š” Origin ํ—ค๋”์˜ ๊ฐ’์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‘๋‹ต์„ ๋ฐ›๊ณ  Access-Control-Allow-Origin ๊ฐ’์ด ์›๋ž˜ ์š”์ฒญ์— ์ง€์ •๋œ ๋„๋ฉ”์ธ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋ฉด ์š”์ฒญ์ด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‘๋‹ต์— Access-Control-Allow-Origin ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

     

     

    ๐Ÿ‘ป CORS / ๋™์ผ ์ถœ์ € ์ •์ฑ… ํ•ด๊ฒฐํ•˜๊ธฐ

    1. Access-Control-Allow-Origin ํ—ค๋” ์„ธํŒ…
      ์„œ๋ฒ„์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž„์˜๋กœ Access-Control-Allow-Origin ํ—ค๋”์— ์•Œ๋งž์€ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
      Node์˜ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ตํ•ด์„œ ์†์‰ฝ๊ฒŒ ์„ธํŒ… ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
      app.use(cors({
        origin : '*', // ๋ชจ๋“  ์š”์ฒญ ํ—ˆ์šฉ
        origin : true, // ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ ๋„๋ฉ”์ธ/ํฌํŠธ๊ฐ€ ์ž๋™์œผ๋กœ origin์— ์‚ฝ์ž…๋œ๋‹ค.
        origin : 'www.domain.com', // ์‹ค ์„œ๋น„์Šค์—์„œ๋Š” ์‹ค์ œ ์„œ๋น„์Šค ๋„๋ฉ”์ธ์„ ๋„ฃ์–ด. ํ•ด๋‹น ๋„๋ฉ”์ธ ์š”์ฒญ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
       credentials : false, // ๊ฐœ๋ฐœ๋‹จ๊ณ„์—์„œ๋Š” false, ์‹ค ์„œ๋น„์Šค์—์„œ๋Š” true
      })
    2. ํ”„๋ก์‹œ ์„ธํŒ…
      ์ฃผ๋กœ ๋™์ผ ์ถœ์ฒ˜ ๋ณด์•ˆ์ •์ฑ…์€ ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ ์ง„ํ–‰์‹œ์— ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 
      ๊ทธ๋ ‡๊ธฐ์— ์„œ๋ฒ„๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ํ”„๋ก์‹œ ์„ธํŒ…์„ ํ†ตํ•ด ํ•ด๋‹น ๋ณด์•ˆ์ •์ฑ…์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      Webpack-DevServer๋ฅผ ํ™œ์šฉํ•˜์‹œ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

     

    # Reference

    Google Cloud : https://cloud.google.com/storage/docs/cross-origin?hl=ko 

     

    ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (CORS)  |  Cloud Storage  |  Google Cloud

    ์˜ˆ์‹œ๋กœ ์ด๋™ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์›น๋ธŒ๋ผ์šฐ์ € ๋“ฑ)์—์„œ ์ ์šฉ๋˜๋Š” ๋ณด์•ˆ ์ •์ฑ…์ž…๋‹ˆ๋‹ค. ์ด ๋ณด์•ˆ ์กฐ์น˜๋Š” ์•…์˜์ ์ธ

    cloud.google.com

    MDN : https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

     

    ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  (CORS) - HTTP | MDN

    ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (Cross-Origin Resource Sharing, CORS)๋Š” ์ถ”๊ฐ€ HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•œ ์ถœ์ฒ˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ

    developer.mozilla.org

     

Designed by Tistory.