2019/09/25 TIL(Today I Learn) - ํฌ๋กœ์Šค ๋„๋ฉ”์ธ ์š”์ฒญ CORS

์–ผ๋งˆ์ „ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  ์„ธ์…˜์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์•Œ๋ ค์ฃผ์—ˆ๋‹ค.
์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ„ฐ ๋จธ์‹ ๋Ÿฌ๋‹, ์•„๋‘์ด๋…ธ๊นŒ์ง€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฌด๊ถ๋ฌด์ง„ํ–ˆ๋Š”๋ฐ, ๋‚˜๋Š” ๊ทธ ์ค‘์—์„œ ํด๋กœ๋ฐ” ์ต์Šคํ…์…˜์„ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.

์˜ˆ์ „๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋‘” ๊ฒŒ ์žˆ์–ด์„œ ๊ณต๊ณต ๋ฐ์ดํ„ฐ ํฌํ„ธ์— ๋“ค์–ด๊ฐ€ ๋ฌด์ž‘์ • ๋ฒ„์Šค API ์‚ฌ์šฉ ์‹ ์ฒญ์„ ํ–ˆ๊ณ , XMLHttpRequest๋กœ ์ž๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CORSCross Origin Resource Sharing ํฌ๋กœ์Šค ๋„๋ฉ”์ธ ์š”์ฒญ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋๋‹ค.

๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด, ๋‚ด ์›นํŽ˜์ด์ง€์™€ API์˜ ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฃŒ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ ์ŠคํŽ™์—๋Š” ๋‹ค๋ฅธ ์ถœ์ฒ˜(์„œ๋ฒ„)๋กœ์˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…Same-Origin Policy์ด ์žˆ๋Š”๋ฐ, ์ด ์ •์ฑ…์ด API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ถˆํŽธํ•จ์„ ์œ ๋ฐœํ•˜๋‹ค๋ณด๋‹ˆ ํฌ๋กœ์Šค ๋„๋ฉ”์ธ์„ ํ—ˆ์šฉํ•˜๋Š” CORS ์ •์ฑ…์ด ์ถ”๊ฐ€๋๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๊ณต๊ณต API ์ž๋ฃŒ๋Š” ์š”์ฒญํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๊ฑฐ๋‹ค.

https://brunch.co.kr/@adrenalinee31/1

ํฌ๋กœ์Šค๋„๋ฉ”์ธ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„ ์ชฝ์—์„œ ๋ชจ๋“  ๋„๋ฉ”์ธ์„ ํ—ˆ์šฉํ•˜๋„๋ก '์‘๋‹ต ํ—ค๋”'๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ณต๊ณต API์˜ ์„œ๋ฒ„๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†๊ธฐ์— ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ์—ˆ๋‹ค.

Ajax๋ฅผ ํ†ตํ•œ ์šฐํšŒ ๋ฐฉ๋ฒ•์ธ xdomainajax ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€, AJAX Cross Origin ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์‚ฌ์šฉํ•ด๋ดค์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ณ„์†ํ•ด์„œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰์„ ํ•˜๋‹ค๊ฐ€ ๊ณต๊ณต ๋ฐ์ดํ„ฐ ํฌํ„ธ์˜ ์งˆ๋ฌธ๊ธ€์„ ๋ณด๊ฒŒ๋˜์—ˆ๋‹ค. https://www.data.go.kr/information/QNA_0000000000014129/qna.do

๊ด€๋ฆฌ์ž ๋‹ต๋ณ€์˜ ์ž๋ฃŒ์— ๋”ฐ๋ฅด๋ฉด ๋ฌธ์„œ๊ฐ€ API ์„œ๋ฒ„์™€ ์ง์ ‘ ํ†ต์‹ ์„ ํ•˜์ง€๋Š” ๋ชปํ•˜๊ณ , ๋™์ผ ๋„๋ฉ”์ธ ๋‚ด ์„œ๋ฒ„๊ฐ€ API ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๋ฉฐ ์ž๋ฃŒ๋ฅผ ๋ฌธ์„œ์— ๋„˜๊ฒจ ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด์—ˆ๋‹ค.

๋™์ผ ๋„๋ฉ”์ธ ๋‚ด ์„œ๋ฒ„์™€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ์„œ๋ฒ„ ๊ฐ„์—๋Š” ํ†ต์‹  ๊ฐ€๋Šฅ


๊ฒฐ๋ก 

  1. ๊ณต๊ณต API๋Š” Ajax๋‚˜ jQuery๋กœ ์šฐํšŒํ•ด์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  2. ๋™์ผ ๋„๋ฉ”์ธ ๋‚ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด API ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Œ
  3. ์ฆ‰, ๊ณต๊ณต API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์–ธ์–ด๋ฅผ ์•Œ์•„์•ผ ํ•จ
  4. ๋‚ด ํ† ์ดํ”„๋กœ์ ํŠธ๋Š” ๊นŒ๋งˆ๋“ํžˆ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ ๐Ÿ˜‚

๊ฒฐ๊ตญ ๋‚˜๋Š” node.js๋ฅผ ๋ฐฐ์›Œ์„œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“  ๋’ค API๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
๋‹น์žฅ ์‹คํ—˜์„ ํ•ด๋ณด๊ณ  ์‹ถ์–ด node.js๋กœ ๊ณต๊ณต api ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•œ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ๋”ฐ๋ผ ํ•ด๋ดค๋‹ค.

https://codevkr.tistory.com/34

โฌ‡๏ธŽ ๊ฒฝ๊ธฐ๋„ ์ •๋ฅ˜์†Œ์กฐํšŒ์„œ๋น„์Šค API์—์„œ ์ขŒํ‘œ๊ธฐ๋ฐ˜ ๊ทผ์ ‘ ์ •๋ฅ˜์†Œ๋ฅผ ์กฐํšŒํ•œ ๊ฒฐ๊ณผ๋‹ค.
์ •๋ฅ˜์žฅ ์กฐํšŒ ๊ฒฐ๊ณผ, ์ •์™•๊ณ  25102, ์ •์™•๊ณ  25106, ์„ธ์ข…์•„ํŒŒํŠธ 25107 ๋“ฑ...

๋” ์ฝ์–ด๋ณผ ๊ฑฐ๋ฆฌ & ์ฐธ๊ณ  ๋ฌธ์„œ

  1. localhost์—์„œ๋Š” CORS ์š”์ฒญ์ด ์•ˆ๋  ์ˆ˜ ์žˆ๋‹จ ๋‚ด์šฉ ์ฐธ๊ณ 
    https://www.zerocho.com/category/NodeJS/post/5a6c347382ee09001b91fb6a
  2. HTTP ์ ‘๊ทผ ์ œ์–ด (CORS)
    https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS
  3. AJAX Cross Origin ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    https://infotake.tistory.com/88
โ† ์ด์ „ ๊ฒŒ์‹œ๋ฌผVanilla js / Ecma script / Typescript ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๋ช…์นญ ์ดํ•ดํ•˜๊ธฐ!
๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ โ†’2019/09/23 TIL(Today I Learn) - Currying ํ•จ์ˆ˜์—์„œ arguments, rest parameter ์‚ฌ์šฉํ•˜๊ธฐ
๋ชฉ๋ก