SOP์™€ CORS

SOP(Same Origin Policy)๋ž€?

ํ•œ origin์œผ๋กœ๋ถ€ํ„ฐ ๋กœ๋“œ๋œ document ๋˜๋Š” script๊ฐ€ ๋‹ค๋ฅธ origin์˜ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œํ•œํ•˜๋Š” ์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ document๋ฅผ ๋ฐ›์„ ๋•Œ๋Š” ๊ทธ document์˜ ์ถœ์ฒ˜๋ฅผ origin์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.

  • ๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ document ๋‚ด์—์„œ ์™ธ๋ถ€๋ฆฌ์†Œ์Šค๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•  ๋•Œ ์ตœ์ดˆ ํŒŒ์•…ํ•œ origin๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด, ๋ณ„๋„์˜ ์ œํ•œ์„ ๋‘๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ด origin์„ ํŒŒ์•…ํ•  ๋•Œ๋Š” scheme, Host, Port๋งŒ ๋ณด๊ณ ์„œ ํŒ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค. https://www.example.com:443/path/page.html ์ด origin์ด๋ผ๊ณ  ์น˜๋ฉด, scheme(https)๊ณผ Host(www.example.com)์™€ port(443)์ด ๋™์ผํ•œ URL์„ same origin์œผ๋กœ ํŒ๋ณ„ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ port๋Š” ์ƒ๋žต๋˜์–ด์žˆ์„ ๋•Œ scheme์— ํ• ๋‹น๋˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํŒ๋ณ„ํ•˜๊ฒŒ ๋œ๋‹ค.

์™œ SOP๊ฐ€ ์ค‘์š”ํ• ๊นŒ?

ํ•ด์ปค๊ฐ€ ์•…์˜์ ์ธ ์ฝ”๋“œ๋ฅผ ๋„ฃ์€ ์‚ฌ์ดํŠธ๋ฅผ ์œ ์ €๊ฐ€ ์—ด์–ด๋ฒ„๋ฆฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

  1. ๋งŒ์•ฝ ์œ ์ €๊ฐ€ gmail ๋“ฑ์— ์ ‘์†ํ•ด๋‘” ์ƒํƒœ๋ผ๋ฉด ์ฟ ํ‚ค๊ฐ€ ์‚ด์•„์žˆ์„ ๊ฒƒ์ด๊ณ , ํ•ด์ปค๋Š” '์•…์˜์ ์ธ ์ฝ”๋“œ'๋ฅผ ํ†ตํ•ด ์ด ์ฟ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ฒจ๋ถ€ํ•˜์—ฌ ๊ตฌ๊ธ€ ๋ฉ”์ผ ์„œ๋ฒ„์— ์œ ์ €์˜ ๋ฉ”์ผ ์ •๋ณด๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๊ตฌ๊ธ€ ๋ฉ”์ผ ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค๋งŒ ํ™•์ธํ•˜๊ณ  ๋ฉ”์ผ ์ •๋ณด๋ฅผ ์‘๋‹ตํ•œ๋‹ค.

  3. ์ด์ œ SOP ์œ ๋ฌด์— ๋”ฐ๋ผ ํ•ด์ปค์—๊ฒŒ ๋ฉ”์ผ์ •๋ณด๊ฐ€ ๋„˜์–ด๊ฐ€๋Š”์ง€ ์œ ๋ฌด๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

    • SOP๊ฐ€ ์—†๋‹ค๋ฉด? ๋ฉ”์ผ ์ •๋ณด๊ฐ€ ๊ทธ๋Œ€๋กœ ํ•ด์ปค์—๊ฒŒ ๋„˜์–ด๊ฐ„๋‹ค.

    • SOP๊ฐ€ ์žˆ๋‹ค๋ฉด? origin์ด gmail์ด ์•„๋‹ˆ๋ผ ํ•ด์ปค์˜ ์‚ฌ์ดํŠธ์ด๋ฏ€๋กœ CORS ์ •์ฑ…์— ์˜ํ•ด ๋ฉ”์ผ ์ •๋ณด read๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ํ•ด์ปค๋Š” ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค!

Cross-origin Network Access๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

Cross-origin๊ฐ„์˜ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š”?

  • JSONP

    • NO!

    • ๋ชจ๋“  origin ๋Œ€์ƒ์œผ๋กœ SOP๋ฅผ ๋ฌด๋ ฅํ™”

  • CORS

    • YES!

    • ํ—ˆ์šฉํ•  origin๋งŒ์„ Access-Control-Allow-Origin์— ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€

Last updated