ð ã«ãããåŒïœSame Origin ããªã·ãŒãšCORSïŒãã³ã·ã§ã³ã®é éã§èŠããïŒ
äºåãããªãã
æ
å ±åŠçå®å
šç¢ºä¿æ¯æŽå£«ãç®æããŠå匷ããŠãããã«ãããã§ãã
仿¥ã¯ãH31æ¥ SC ååŸâ
å1ã ã®éå»åé¡ãè§£ããŠããŠåºãŠãã
Same-Originããªã·
CORS
JSONP
ãšããèšèããŸã£ããåããããæãåã£ãŠæ·±æãããŠã¿ãå匷èšé²ã§ãã
å¿çšæ å ±ã§ã¯ã»ãšãã©è§Šããªãåéãªã®ã§ãæåã¯
ããªãªãžã³ã£ãŠäœïŒã
ãCORSã£ãŠã©ãããæ¥ãã®ïŒã
ãšå®å
šã«è¿·åã§ããã
ã§ãããã¡ã®çžæ£ã»ChatGPT ã«èããŠã¿ããšããã
ãã®åé¡ã¯IPAãäœã£ãâç¥åé¡âã§ãWebã»ãã¥ãªãã£ã®çè§£ãäžæ°ã«ã€ãªããæ§æããããã§ãã
ãã£ãããªã®ã§ããã®æ©äŒã«ãã£ããæŽçããŠã¿ãŸããã
調ã¹ãŠã¿ããš
ãªãªãžã³ãšã¯äœã
Same-Originããªã·ã¯ãªãå¿ èŠãªã®ã
JSONPãã©ããããæä»£ã®ç£ç©ããªã®ã
CORSãã©ãããŠçãŸããã®ã
ãçè§£ã§ããŸããã
ä»åã¯ãã®åŠã³ã
ã«ãããåŒïŒäŸãïŒæŽå²ïŒå æé¢ä¿ïŒã§ãŸãšããŠãããŸãã
â ãã³ã·ã§ã³ã®ãé éãã§èãã

ãã³ã·ã§ã³ãæ³åããŠã¿ãŠãã ããã
ããªãã¯ã301å·å®€ ã«äœãã§ããŸãã
é
éå¡ããã¯åºæ¬çã«ã
ã301å·å®€ã®è·ç©ã¯301å·å®€ã«ããæž¡ãã¡ããã¡ã
ãšããã«ãŒã«ã§åããŠããŸãã
ã€ãŸã
301 â 301ãOKïŒåãéšå±ïŒ
301 â 302ãNGïŒéšå±çªå·ãéãïŒ301 â 401ãNGïŒéãéã£ãŠãéšå±çªå·ãéãïŒ
ãã®ã«ãŒã«ããSame-Originããªã·ã§ãã
â ãªãªãžã³ïŒOriginïŒãšã¯
Webã§ã¯
ãµã€ãã®ãäœæãã ãªãªãžã³ïŒOriginïŒ ãšåŒã³ãŸãã
ãªãªãžã³ã¯æ¬¡ã® 3ã€ã§æ±ºãŸããŸãã
ã¹ããŒã ïŒprotocolïŒ
äŸïŒhttp / httpsãã¹ãåïŒdomain / FQDNïŒ
äŸïŒexample.comããŒãçªå·
äŸïŒ80 / 443
äŸãã°
ãã®3ã€ããã¹ãŠäžèŽããŠããå Žåã ã
åäžãªãªãžã³ã§ãã
1ã€ã§ãéãã°ãç°ãªããªãªãžã³ã«ãªããŸãã
â Same-Originããªã·ãšã¯
ãã©ãŠã¶ã«ã¯æ¬¡ã®å€§ååããããŸãã
ãéããªãªãžã³ã®ããŒã¿ã«ã¯åæã«ã¢ã¯ã»ã¹ããŠã¯ãããªãã
ããã¯ãšãŠãéèŠãªã«ãŒã«ã§ãã
ãããã®å¶éãç¡ãã£ããã
éè¡ãµã€ãã«ãã°ã€ã³ãããŸãŸãå¥ãµã€ããéãããšãã
ãã®ãµã€ãã®JavaScriptãããéè¡ã®æ
å ±ãçãã
ãšããããšãèµ·ããŠããŸããŸãã
ãã®ããããã©ãŠã¶ã¯
ç°ãªããªãªãžã³ãžã®ã¢ã¯ã»ã¹ãåºæ¬çã«çŠæ¢ããŠããŸãã
ãã©ãŠã¶ã¯âãŠãŒã¶ã®ä»£çâãšããŠåãããã
æªæãããµã€ããããŠãŒã¶ãå®ãå¿
èŠãããã
ã ãããã©ãŠã¶åŽã Same-Origin ã匷å¶ããŠããŸãã
â ãããçŸä»£ã®Webã§ã¯å°ã
ããã§åé¡ãåºãŠããŸããæè¿ã®ã®Webã¢ããªã¯
ããã³ããšã³ã
APIãµãŒã
èªèšŒãµãŒã
ãªã©ãå¥ãã¡ã€ã³ã§æ§æãããããšãå€ãã§ãã
äŸãã°
ãããã¯ãå šéšç°ãªããªãªãžã³ã§ãã
ãããã
ããã³ããšã³ãããAPIã«ã¢ã¯ã»ã¹ã§ããªããšã¢ããªãåããŸããã
â JSONPïŒæã®è£æïŒ
ããã§ç»å Žããã®ãã
ãJSONPãã§ãã
å°ãæŽå²ãèŠãŠã¿ãŸãã
1990幎代
JavaScriptãæ®å
â ã»ãã¥ãªãã£åé¡ãå¢ãã
â Same-Originããªã·å°å
¥
2000幎代
AJAXãæ®å
ããã©ãŠã¶ããAPIãåŒã³ããïŒã
ããããSame-Originããªã·ãéªéãããŸãã
ããã§éçºè
ã䜿ãå§ããã®ããJSONPã
ããã¯
scriptã¿ã°ã¯ãã©ã®ãªãªãžã³ããã§ãèªã¿èŸŒãããšãã仿§ãå©çšããè£æã§ãã
APIã®çµæããJavaScriptãšããŠè¿ãããšããæ¹æ³ã§ãã
ãã ãJSONPã«ã¯å€§ããªåé¡ããããŸãã
ä»»æã®JavaScriptãå®è¡ã§ããŠããŸã
ã¢ã¯ã»ã¹å¶åŸ¡ã§ããªã
GETãã䜿ããªã
ã€ãŸããéåžžéæ®µããåæã«å ¥ãé éå¡ãã®ãããªãã®ã§ãã
â CORSïŒæ£åŒãªèš±å¯ã®ä»çµã¿ïŒ
ãã㊠2014 幎é ã
JSONP ã®å±éºæ§ãè§£æ¶ããããã« CORS ãæ£åŒã«æšæºå ãããŸããã
æå³ã¯ã
ãéãéšå±çªå·ïŒç°ãªããªãªãžã³ïŒã§ãã管ç人ïŒãµãŒãïŒãèš±å¯ããçžæãªãé éOKã
ãšããä»çµã¿ã
ãã©ãŠã¶ã¯ãªã¯ãšã¹ãã« Origin ãä»ããŠåä¹ãã
ãµãŒã㯠Access-Control-Allow-Origin ã§ããã®çžæãªãOKããšè¿ããŸãã
ããã¯ãŸãã«ã
ã302å·å®€ããã®è·ç©ãªãã301å·å®€ã§ãåãåã£ãŠããã§ããã
ãšãã管ç人ã®èš±å¯ãšåãã

â å匷ããŠæããããš
ä»å調ã¹ãŠã¿ããšããã
ã»ECãµã€ã
ã»ãã°ã€ã³èªèšŒ
ã»APIéä¿¡
ã§ããè£åŽã§ã¯åžžã«ãã®ä»çµã¿ïŒCORSïŒãåããŠããããšã
åãããŸããã
ãŸããæŽå²ãç¥ããšãéçºè
ãã¡ã¯ããã©ãŠã¶ããAPIãåŒã³ããããšããæãããè£æïŒJSONPïŒãçã¿åºãã
ãã®åé¡ã解決ããããã«ãæ£åŒãªä»çµã¿ïŒCORSïŒãäœããã
ãšãããšãããä»åã®å匷ã®é¢çœãã£ããã€ã³ãã§ãã
Same-Originããªã·
JSONP
CORS
ãã®æµããäžæ¬ã®ã¹ããŒãªãŒãšããŠã€ãªãããWebã»ãã¥ãªãã£ã®çè§£ãäžæ°ã«æ·±ãŸããŸããã
ãã£ããïŒ
å¿çšæ
å ±ããæ
å ±åŠçå®å
šç¢ºä¿æ¯æŽå£«ãžã®é段ã¯é«ãã§ãããŒ
次ããæ¬¡ãžãšç¥ããªãèšèã«åºäŒããŸãã
ãããã«ã³ãã³ãç©ã¿äžããã®ã¿ðª
æ¬æ¥ãèªãã§ããã ãå¬ããã§ãïŒããããšãããããŸãïŒ
埩ç¿ïŒã¹ãããã¢ããå°ãã¹ãã¯ãã¡ãã§ãã

