Search
Duplicate
๐Ÿ›ก๏ธ

CORS

Tags
๊ณต๋ถ€
Date
Tags 2
Vue.js
URL
๋น„๊ณ 
์‚ฌ๋žŒ

CORS (Cross-Origin Resource sharing)

CORS ๋Š” ํ•œ ๋„๋ฉ”์ธ ๋˜๋Š” Origin ์˜ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์„ ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค์— ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์ด๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ตฌํ˜„๋œ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… ๋•Œ๋ฌธ์— ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.
๋™์ผ์ถœ์ฒ˜ ์ •์ฑ…์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ํ”„๋กœํ† ์ฝœ, ํ˜ธ์ŠคํŠธ๋ช…, ํฌํŠธ๊ฐ€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค์—๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์™œ ๊ตณ์ด ๋ถˆํŽธํ•˜๊ฒŒ ๋ง‰์•„๋†“์€๊ฑธ๊นŒ?
์˜ˆ๋ฅผ๋“ค์–ด, ๋‚ด๊ฐ€ OO ์€ํ–‰์˜ ์„œ๋ฒ„๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๋งŒ์•ฝ ๋‚ด๊ฐ€ ์ƒ๊ฐ์—†์ด CORS ์ „๋ถ€ ํ—ˆ์šฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ƒ๊ธธ๊นŒ? ์„ธ์ƒ ๋‚˜์œ ๋งˆ์Œ์„ ๊ฐ€์ง„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ธ์ถœ์— ๊ด€ํ•œ api ์ •๋ณด๋ฅผ ๋‚š์•„์„œ ๋ˆ์„ ์ธ์ถœํ•ด๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ง‰์•„๋†“์€ ๊ฒƒ!

CORS ๊ด€๋ จ ๋ฌธ์ œ

์›น๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ์ฒ˜์Œ์œผ๋กœ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ํฐ ๊ณ ๋น„์ผ ๊ฒƒ์ด๋‹ค. (์˜ค๋Š˜ ๊ฒช์—ˆ๋‹ค)
vue.js ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 3000, ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ํฌํŠธ๋ฒˆํ˜ธ๋Š” 8080 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅธ ํฌํŠธ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ ค๊ณ  ํ•ด์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ํด๋ผ์ด์–ธํŠธ๋‹จ, ์„œ๋ฒ„๋‹จ ๋‘˜ ๋‹ค ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋‹จ ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋” ๋งž๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด corsFilter ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

CorsFilter

์›น ์„œ๋ฒ„์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ Cross domain request ์ธ์ง€ ์ฒดํฌํ•˜์—ฌ ์‹ค์ œ ์š”์ฒญ ํŽ˜์ด์ง€์— ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ์ ์ ˆํ•œ ์ •์ฑ…๊ณผ ํ—ค๋”๋“ค์„ ์ ์šฉํ•œ๋‹ค.
์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ด ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์ณ์•ผ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์•„๋ž˜๋Š” ์˜ค๋Š˜ ๋‚ด๊ฐ€ ์„ค์ •ํ•œ CorsFilter ์ด๋‹ค.
๋‹ค๋ฅธ๊ฑด ์ƒ๋žตํ•˜๊ณ , Access-Control-Allow-Origin ๋ถ€๋ถ„์„ ๋ณด์ž. ์ด๋Š” ๋„๋ฉ”์ธ ๊ฐ„ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ ์šฉํ•˜๋ฉด vue.js ์™€ ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค!