
ð¡CORS(ã³ãŒã¹)ã®æŽç CROSããšæã£ãŠãã»ã»ã» ã¯ãã¹ãªãªãžã³ãšã¯ãã¹ãã¡ã€ã³ã®éã
ãªãªãžã³ïŒæ å ±å ïŒã亀差ïŒã¯ãã¹ïŒããããã¯ãã¹ãªãªãžã³ã察矩èªã¯ã»ãŒã ãªãªãžã³
ã¯ãã¹ãªãªãžã³ãªãœãŒã¹å ±æïŒCORSïŒã³ãŒã¹ïŒã¯ãWeb ããŒãžäžã®å¶éããããªãœãŒã¹ããæåã®ãªãœãŒã¹ãæäŸããããã¡ã€ã³å€ã®å¥ã®ãã¡ã€ã³ããèŠæ±ã§ããããã«ããä»çµã¿ã§ãã
Web ããŒãžã«ã¯ãã¯ãã¹ãªãªãžã³ã®ç»åãã¹ã¿ã€ã«ã·ãŒããã¹ã¯ãªãããiframeãåç»ãèªç±ã«åã蟌ãããšãã§ããŸããç¹å®ã®ãã¯ãã¹ãã¡ã€ã³ãèŠæ±ãç¹ã« Ajax èŠæ±ã¯ãåäžçæå ã»ãã¥ãªãã£ããªã·ãŒã«ãã£ãŠããã©ã«ãã§çŠæ¢ãããŠããŸããCORS ã¯ããã©ãŠã¶ãšãµãŒããŒãçžäºã«äœçšããŠãã¯ãã¹ãªãªãžã³ãªã¯ãšã¹ããèš±å¯ããŠãå®å šãã©ãããå€æããæ¹æ³ãå®çŸ©ããŠããŸã ã
CORS ã®ä»æ§ã¯ãWHATWG ã® Fetch Living Standard ã®äžéšãšããŠå«ãŸããŠããŸãããã®ä»æ§ã§ã¯ãCORS ãçŸåšã©ã®ããã«ãã©ãŠã¶ã«å®è£ ãããŠãããã説æããŠããŸã ã
ãããªããããªããšèšãããŠãå°ãããª


åççã«ã¯ããŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ãã¹ãŠã®URIãåå¥ã®ä¿è·ãã¡ã€ã³ãšããŠæ±ããããURIããååŸããã³ã³ãã³ããå¥ã®URIãšçžäºäœçšããããã«æ瀺çãªåæãèŠæ±ããããšãã§ããã æ®å¿µãªããããã®èšèšã¯éçºè ã«ãšã£ãŠé¢åã§ãããªããªãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯å€ãã®å Žåãå調ããŠåäœããå€æ°ã®ãªãœãŒã¹ã§æ§æãããŠããããã§ãã 倧éæã«èšããšã2ã€ã®URIãåãã¹ããŒã ããã¹ããããŒããæã€å Žåãåããªãªãžã³ã«å±ãã(ããªãã¡ãåãããªã³ã·ãã«ãè¡šã)ãšããããšã§ãã (å®å šãªè©³çŽ°ã«ã€ããŠã¯ã»ã¯ã·ã§ã³4åç §)ã
çžå€ãããã¯ã±ã®ããããªãè¡šçŸã ãããããªæãã®ããšãèšã£ãŠããã ãã

ãã®ææžã§ã¯ïŒãŠãŒã¶ãšãŒãžã§ã³ããæš©éãç¹æš©ãæã€ç¯å²ãšããŠãã䜿ããã "ãªãªãžã³ "ã®æŠå¿µãå®çŸ©ããã äžè¬ã«ããŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ãæªæã®ãããŠã§ããµã€ãéå¶è ãè¯æ§ã®ãŠã§ããµã€ãã®éå¶ã劚害ããããšãé²ãããã«ãç°ãªããªãªãžã³ããååŸãããã³ã³ãã³ããåé¢ããŸãã
ããã¡ã€ã³ãããã现ããããªãªãžã³ãã®èãæ¹

以äžã®ãªãœãŒã¹ã¯ãã¹ãŠåããªãªãžã³ã§ãã
http://example.com/
http://example.com:80/
http://example.com/path/file
ããããã®URIã¯åãã¹ããŒã ããã¹ããããŒãã®æ§æèŠçŽ ãæã£ãŠããŸãã
次ã®åãªãœãŒã¹ã¯ãä»ãšã¯ç°ãªãèµ·æºãæã€ã
http://example.com/
http://example.com:8080/
http://www.example.com/
https://example.com:80/
https://example.com/
http://example.org/
http://ietf.org/
ããããã®ã±ãŒã¹ã§ãã¹ããŒã ããã¹ããããŒãã®ãã¡å°ãªããšã1ã€ã®æ§æèŠçŽ ã®å°ãªããšãäžã€ã¯ããªã¹ãã®ä»ã®ãã®ãšç°ãªãã§ãããã

CORSã¯ãJSONPãã¿ãŒã³ã®çŸä»£çãªä»£æ¿æ段ãšããŠäœ¿çšããããšãã§ããŸããCORSã®å©ç¹ã¯ã次ã®ãšããã§ãã
JSONP 㯠GET ãªã¯ãšã¹ã ã¡ãœããã®ã¿ããµããŒãããŸãããCORS ã¯ä»ã®ã¿ã€ãã® HTTP ãªã¯ãšã¹ãããµããŒãããŸãã
CORS ã«ãããWeb ããã°ã©ããŒã¯éåžžã® XMLHttpRequest ã䜿çšã§ããããã«ãªããJSONP ãããåªãããšã©ãŒåŠçããµããŒãã§ããããã«ãªããŸãã
JSONP ã¯ãå€éšãµã€ãã䟵害ãããå Žåã«ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãããCORS ã«ãããWeb ãµã€ãã¯å¿çãæåã§è§£æããŠã»ãã¥ãªãã£ãåäžãããããšãã§ããŸã[3]ã
JSONPã®äž»ãªå©ç¹ã¯ãCORSããµããŒãããã以åã®ã¬ã¬ã·ãŒãã©ãŠã¶ïŒOpera Miniããã³Internet Explorer 9以åïŒã§åäœããèœåã§ãããçŸåšãCORS ã¯ã»ãšãã©ã®ææ° Web ãã©ãŠã¶ã§ãµããŒããããŠããŸãã
ãããªãšæã£ããå¿æŽãããïŒ
