๐Ÿ“13์ฃผ์ฐจ ์œ„ํด๋ฆฌ ํŽ˜์ดํผ ๋ฏธ์…˜

pjw__98ยท2024๋…„ 1์›” 13์ผ
1
post-thumbnail

CORS ์—๋Ÿฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋ฉด ๋ ์ง€ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

CORS๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

CORS(Cross-Origin Resource Sharing)๋Š” ํ•œ ๋„๋ฉ”์ธ์˜ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ œํ•˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ์›๋ณธ ๊ฐ„ ์š”์ฒญ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์•…์„ฑ JavaScript๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์ฃผ์ž…๋˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ ์„œ๋ฒ„์— ๋ฌด๋‹จ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ˆ๋ฐฉ ์กฐ์น˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ํŽ˜์ด์ง€๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ/ํฌํŠธ ์กฐํ•ฉ์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์•ก์„ธ์Šค ๋ฐ ์กฐ์ž‘์„ ํฌํ•จํ•œ ๋ณด์•ˆ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

CORS ์—๋Ÿฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํ”„๋ก์‹œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์›น ํŽ˜์ด์ง€์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ์ง์ ‘ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋Œ€์‹  ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€๋Š” ์ž์ฒด ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์—๋Š” ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ CORS ์ •์ฑ…์„ ์šฐํšŒํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ธก์—์„œ CORS ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@CrossOrigin ์ฃผ์„ ์‚ฌ์šฉ:
์ปจํŠธ๋กค๋Ÿฌ ์ˆ˜์ค€์˜ ๋งคํ•‘ ๋ฐฉ๋ฒ•์— @CrossOrigin ์ฃผ์„์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์„์€ ํŠน์ • ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ Cross-Origin ๋ฆฌ์†Œ์Šค ๊ณต์œ  ์ •์ฑ…์„ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

CorsFilter ์‚ฌ์šฉ:
์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋Š” CorsFilter๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋Š” ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Expose-Headers ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ํ•„์š”ํ•œ CORS ์ •์ฑ…๊ณผ ํ—ค๋”๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›๋ณธ ๊ฐ„์„ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Reference-Log4Jae

profile
โ˜„๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€