Access-Control-Allow-Credentials ãããã¼
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
HTTP ã® Access-Control-Allow-Credentials ã¯ã¬ã¹ãã³ã¹ãããã¼ã§ããµã¼ãã¼ããªãªã¸ã³ãã¾ããã HTTP ãªã¯ã¨ã¹ãã«è³æ ¼æ
å ±ãæ·»ä»ãããã¨ã許å¯ãããã©ããããã©ã¦ã¶ã¼ã«æç¤ºãã¾ãã
è³æ ¼æ å ±ã«ã¯ã¯ããã¼ãTLS ã¯ã©ã¤ã¢ã³ãè¨¼ææ¸ãã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããå«ãèªè¨¼ãããã¼ãªã©ãããã¾ãã ããã©ã«ãã§ã¯ããããã®è³æ ¼æ å ±ã¯ãªãªã¸ã³ãã¾ãããªã¯ã¨ã¹ãã§ã¯éä¿¡ããã¾ãããããããã¨ããµã¤ãã ã¯ãã¹ãµã¤ããªã¯ã¨ã¹ããã©ã¼ã¸ã§ãªã¼ (CSRF) æ»æã«å¯¾ãã¦èå¼±ã«ãªãå¯è½æ§ãããã¾ãã
ã¯ã©ã¤ã¢ã³ãã¯ããµã¤ãéãªã¯ã¨ã¹ãã§è³æ ¼æ å ±ãæ·»ä»ãããã¨ããããã¤ãã®æ¹æ³ã§è¦æ±ãããã¨ãã§ãã¾ãã
fetch()ã使ç¨ããéã«credentialsãªãã·ã§ã³ã"include"ã«è¨å®ãããXMLHttpRequestã使ç¨ããéã«ãXMLHttpRequest.withCredentialsããããã£ãtrueã«è¨å®ãããEventSource()ã使ç¨ããéã«ãEventSource.withCredentialsããããã£ãtrueã«è¨å®ããã
è³æ ¼æ å ±ãæ·»ä»ãããã®ã¯æ¬¡ã®å ´åã§ãã
- ããªãã©ã¤ãã®ãããªã¯ã¨ã¹ãã®å ´åãããªãã©ã¤ããªã¯ã¨ã¹ãã«ã¯è³æ ¼æ
å ±ãæ·»ä»ãã¾ããã
ããªãã©ã¤ããªã¯ã¨ã¹ãã«å¯¾ãããµã¼ãã¼ã®ã¬ã¹ãã³ã¹ã§
Access-Control-Allow-Credentialsãããã¼ãtrueã«è¨å®ããã¦ããå ´åãå®éã®ãªã¯ã¨ã¹ãã«ã¯è³æ ¼æ å ±ãæ·»ä»ãã¾ããããã§ãªãå ´åããã©ã¦ã¶ã¼ã¯ãããã¯ã¼ã¯ã¨ã©ã¼ãå ±åãã¾ãã - ããªãã©ã¤ãã®ãªããªã¯ã¨ã¹ãã®å ´åããªã¯ã¨ã¹ãã«ã¯è³æ ¼æ
å ±ãæ·»ä»ããã¾ãããµã¼ãã¼ã®ã¬ã¹ãã³ã¹ã§
Access-Control-Allow-Credentialsãããã¼ãtrueã«è¨å®ããã¦ããªãå ´åããã©ã¦ã¶ã¼ã¯ãããã¯ã¼ã¯ã¨ã©ã¼ãå ±åãã¾ãã
| ãããã¼ç¨®å¥ | ã¬ã¹ãã³ã¹ãããã¼ |
|---|
æ§æ
Access-Control-Allow-Credentials: true
ãã£ã¬ã¯ãã£ã
true-
ãµã¼ãã¼ã¯ãªãªã¸ã³é HTTP ãªã¯ã¨ã¹ãã«è³æ ¼æ å ±ãæ·»ä»ãããã¨ã許å¯ãã¾ãã ãã®ãããã¼ã®æå¹ãªå¤ã¯ããã®ã¿ã§ããã大æåå°æåãåºå¥ãã¾ãã è³æ ¼æ å ±ãå¿ è¦ãªãå ´åã¯ãå¤ã
falseã«è¨å®ããã®ã§ã¯ãªãããã®ãããã¼èªä½ãå®å ¨ã«çç¥ãã¦ãã ããã
ä¾
è³æ ¼æ å ±ã®è¨±å¯:
Access-Control-Allow-Credentials: true
fetch() ãè³æ ¼æ
å ±ä»ãã§ä½¿ç¨:
fetch(url, {
credentials: "include",
});
XMLHttpRequest ãè³æ ¼æ
å ±ä»ãã§ä½¿ç¨:
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);
仿§æ¸
| 仿§æ¸ |
|---|
| Fetch > # http-access-control-allow-credentials > |