๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ“„ CORS

1. JSONP์™€ CORS์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?โ€‹

JSONP(JSON with Padding)์™€ CORS(๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ )๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ์ˆ ๋กœ, ์›น ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ(์›น์‚ฌ์ดํŠธ)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

JSONPโ€‹

JSONP๋Š” ์ดˆ๊ธฐ์˜ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… ์ œํ•œ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ๋น„๊ต์  ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ๋กœ, ์›น ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜(๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ ๋˜๋Š” ํฌํŠธ)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. <script> ํƒœ๊ทธ์˜ ๋กœ๋”ฉ์€ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์˜ ์ œํ•œ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, JSONP๋Š” ๋™์ ์œผ๋กœ <script> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” URL์„ ์ง€์ •ํ•˜์—ฌ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น URL์˜ ์‘๋‹ต์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๊ฐ์‹ธ์ ธ ์žˆ์œผ๋ฉฐ, ์›น ํŽ˜์ด์ง€์˜ JavaScript์—์„œ ์ด ํ•จ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

// client-side
function receiveData(jsonData) {
console.log(jsonData);
}

let script = document.createElement('script');
script.src = 'http://example.com/data?callback=receiveData';
document.body.appendChild(script);
// server-side
receiveData({ name: 'PittWu', type: 'player' });

๋‹จ์ ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ๋†’๊ณ (์ž„์˜์˜ JavaScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ) GET ์š”์ฒญ๋งŒ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CORSโ€‹

CORS๋Š” JSONP๋ณด๋‹ค ๋” ์•ˆ์ „ํ•˜๊ณ  ํ˜„๋Œ€์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. HTTP ํ—ค๋” Access-Control-Allow-Origin์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์— ํ•ด๋‹น ์š”์ฒญ์ด ํ—ˆ์šฉ๋จ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๊ด€๋ จ CORS ํ—ค๋” ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜์—ฌ ์–ด๋–ค ์ถœ์ฒ˜๊ฐ€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ http://client.com์˜ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ http://api.example.com์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, api.example.com์€ ์‘๋‹ต์— ๋‹ค์Œ HTTP header๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

Access-Control-Allow-Origin: http://client.com

๋˜๋Š” ๋ชจ๋“  ์ถœ์ฒ˜๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

Access-Control-Allow-Origin: *

CORS๋Š” ๋ชจ๋“  ์œ ํ˜•์˜ HTTP ์š”์ฒญ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ต์ฐจ ์ถœ์ฒ˜ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ‘œ์ค€ํ™”๋˜๊ณ  ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.