CORS(Cross-Origin Resource Sharing)๋Š” ์ตœ์‹  ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„์—์„œ ๊ตฌํ˜„๋˜๋Š” ์ค‘์š”ํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์œผ๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ์›๋ณธ(๋„๋ฉ”์ธ, ํ•˜์œ„ ๋„๋ฉ”์ธ, ๋„๋ฉ”์ธ, ํ•˜์œ„ ๋„๋ฉ”์ธ, ๋˜๋Š” ํ”„๋กœํ† ์ฝœ). AppMaster ์™€ ๊ฐ™์€ no-code ํ”Œ๋žซํผ์˜ ์ธ๊ธฐ๊ฐ€ ๊ณ„์† ๋†’์•„์ง€๊ณ  ์žˆ์–ด ๊ธฐ์ˆ  ์ง€์‹์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋„ ์ •๊ตํ•œ ์›น, ๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ CORS์˜ ์—ญํ• ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” "๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…"์ด๋ผ๋Š” ๋ณด์•ˆ ์ •์ฑ…์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •์ฑ…์€ ์›นํŽ˜์ด์ง€๊ฐ€ ์š”์ฒญ ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅธ ์ถœ์ฒ˜์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์€ ์•…์˜์ ์ธ ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํšจ๊ณผ์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด์ง€๋งŒ ํ•ฉ๋ฒ•์ ์ธ ๊ต์ฐจ ์‚ฌ์ดํŠธ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ œํ•œํ•˜๋Š” ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋„ ๋‚ณ์Šต๋‹ˆ๋‹ค. CORS๋Š” ๋ณด์•ˆ ์˜ˆ๋ฐฉ ์กฐ์น˜๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์„ ๋ฌด์‹œํ•˜๊ณ  ํŠน์ • ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.

no-code ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ, ํ•˜์œ„ ๋„๋ฉ”์ธ ๋ฐ ํ”„๋กœํ† ์ฝœ์— ํ˜ธ์ŠคํŒ…๋œ ๋ฐ์ดํ„ฐ ๋ฐ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— CORS๋Š” ํŠนํžˆ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppMaster ๋กœ ์ƒ์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ํ˜ธ์ŠคํŒ…๋œ ํƒ€์‚ฌ API์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ CDN(์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ)์—์„œ ๊ธ€๊ผด ๋ฐ ์Šคํƒ€์ผ์‹œํŠธ์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์„ ์‹œ๋„ํ•˜๋ฉด ์š”์ฒญ์˜ ์ถœ์ฒ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” "Origin"์ด๋ผ๋Š” ์ถ”๊ฐ€ ํ—ค๋”์™€ ํ•จ๊ป˜ ๋Œ€์ƒ ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” Origin ํ—ค๋”๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Origin์„ ์ธ์‹ํ•˜๊ณ  ์Šน์ธํ•˜๋ฉด ํ—ˆ์šฉ๋œ Origin ๋˜๋Š” ์™€์ผ๋“œ์นด๋“œ(*)๊ฐ€ ํฌํ•จ๋œ "Access-Control-Allow-Origin"์ด๋ผ๋Š” HTTP ์‘๋‹ต ํ—ค๋”๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”๊ตฌ.

์ ์ ˆํ•œ CORS ๊ตฌ์„ฑ์ด ์—†์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์›๋ณธ ๊ฐ„ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ๊ฐ„์˜ ์•ˆ์ „ํ•˜๊ณ  ์›ํ™œํ•œ ํ†ต์‹ ์„ ์ด‰์ง„ํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ จ ์‹œ์Šคํ…œ์— ์˜ฌ๋ฐ”๋ฅธ CORS ์„ค์ •์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ CORS๋Š” HTTP OPTIONS ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "์‹คํ–‰ ์ „ ์š”์ฒญ" ๊ฐœ๋…๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹คํ–‰ ์ „ ์š”์ฒญ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ์™€ ํ—ˆ์šฉ๋œ ํ—ค๋”๋ฅผ ํ™•์ธํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด๋„ ์•ˆ์ „ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ „ ์š”์ฒญ์„ ์Šน์ธํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์‹ค์ œ ์š”์ฒญ์„ ์ง„ํ–‰ํ•˜์—ฌ ํ†ต์‹  ํ”„๋กœ์„ธ์Šค ์ค‘์— ๊ฐ€์žฅ ๋†’์€ ๋ณด์•ˆ ํ‘œ์ค€์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์˜ no-code ํ”Œ๋žซํผ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ CORS ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  REST API, ์›น ์„œ๋น„์Šค ๋ฐ ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก CORS์™€ ํ˜ธํ™˜๋˜๋Š” ๊ฐ•๋ ฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ƒ์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๋ฐ ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ตœ์‹  ์›น ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ถœ์ฒ˜์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์ฝ˜ํ…์ธ ์™€ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ AppMaster ์—์„œ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ OAuth ๋ฐ JWT(JSON Web Tokens)์™€ ๊ฐ™์€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ no-code ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋น„์Šค์™€ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ CORS๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฆฌ์†Œ์Šค ๊ฐ„์˜ ๋ณด์•ˆ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. AppMaster ์™€ ๊ฐ™์€ no-code ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ ๊ธ‰ ์›น, ๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์˜ค๋Š˜๋‚ ์˜ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ์„ธ๊ณ„์—์„œ๋Š” CORS๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. AppMaster ์˜ ํ”Œ๋žซํผ์€ CORS๋ฅผ ์ง€์›ํ•˜๊ณ  ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ๊ณ ์˜ ๋ณด์•ˆ ํ‘œ์ค€์„ ์œ ์ง€ํ•˜๋„๋ก ์„ธ์‹ฌํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๊ฐœ๋ฐœ์ž์™€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋ชจ๋‘์—๊ฒŒ ์›ํ™œํ•˜๊ณ  ์•ˆ์ „ํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.