ä½¿ç¨ HTTP Cookie
cookieï¼ä¹ç¨±çº Web Cookie æçè¦½å¨ Cookieï¼æ¯ä¼ºæå¨å³é給使ç¨è ç¶²é ç覽å¨çä¸å°æ®µè³æãç覽å¨å¯ä»¥å²å Cookieãå»ºç«æ°ç Cookieãä¿®æ¹ç¾æç Cookieï¼ä¸¦å¨ä¹å¾çè«æ±ä¸å°å®åå³å給åä¸å伺æå¨ãCookie è®ç¶²é æç¨ç¨å¼è½å¤ å²åæéçè³æä¸¦è¨ä½çæ è¨æ¯ï¼æ ¹æé è¨ï¼HTTP å宿¯ç¡çæ çã
卿¬æä¸ï¼æåå°æ¢è¨ Cookie ç主è¦ç¨éãè§£éä½¿ç¨ Cookie çæä½³å¯¦è¸ï¼ä¸¦æª¢è¦å ¶é±ç§åå®å ¨æ¹é¢çå½±é¿ã
Cookie çç¨é
é常ï¼ä¼ºæå¨æä½¿ç¨ HTTP Cookie çå §å®¹ä¾å¤æ·ä¸åçè«æ±æ¯å¦ä¾èªåä¸åç覽å¨ï¼ä½¿ç¨è ï¼ç¶å¾è¦æ æ³ç¼åºå人åæéç¨çåæãä»¥ä¸æè¿°ä¸ååºæ¬ç使ç¨è ç»å ¥ç³»çµ±ï¼
- 使ç¨è å°ç»å ¥æèå³é給伺æå¨ï¼ä¾å¦ééè¡¨å®æäº¤ã
- 妿æèæ£ç¢ºï¼ä¼ºæå¨ææ´æ° UI 以表示使ç¨è å·²ç»å ¥ï¼ä¸¦åæä¸åå å« session ID ç Cookieï¼è©² Cookie æå¨ç覽å¨ä¸è¨éå ¶ç»å ¥çæ ã
- ç¨å¾ï¼ä½¿ç¨è ç§»åå°åä¸åç¶²ç«ä¸çä¸åé é¢ãçè¦½å¨æå°å å« session ID ç Cookie é£åå°æçè«æ±ä¸èµ·å³éï¼ä»¥è¡¨ç¤ºå®ä»ç¶èªçºä½¿ç¨è å·²ç»å ¥ã
- 伺æå¨ææª¢æ¥ session IDï¼å¦æä»ç¶ææï¼åæå³éå人åçæ¬çæ°é é¢çµ¦ä½¿ç¨è ãå¦æç¡æï¼åæåªé¤ session IDï¼ä¸¦å使ç¨è 顯示éç¨çæ¬çé é¢ï¼æå¯è½é¡¯ç¤ºãåå被æãçè¨æ¯ä¸¦è¦æ±å次ç»å ¥ï¼ã

Cookie 主è¦ç¨æ¼ä¸åç®çï¼
- æè©±ç®¡çï¼ä½¿ç¨è ç»å ¥çæ ãè³¼ç©è»å §å®¹ãéæ²åæ¸ï¼æä»»ä½å ¶ä»ä¼ºæå¨éè¦è¨ä½ç使ç¨è æè©±ç¸éç´°ç¯ã
- å人åï¼ä½¿ç¨è å好ï¼ä¾å¦é¡¯ç¤ºèªè¨å UI 主é¡ã
- 追蹤ï¼è¨éååæä½¿ç¨è è¡çºã
è³æå²å
å¨ Web æ©æï¼ç¶æ²æå
¶ä»é¸ææï¼Cookie è¢«ç¨æ¼ä¸è¬çç¨æ¶ç«¯è³æå²åç®çãç¾å¨å»ºè°ä½¿ç¨ç¾ä»£çå²å APIï¼ä¾å¦ Web Storage APIï¼localStorage å sessionStorageï¼å IndexedDBã
å®åæ¯çºå²åèè¨è¨çï¼æ°¸é 䏿å°è³æå³éå°ä¼ºæå¨ï¼ä¸¦ä¸æ²æä½¿ç¨ Cookie é²è¡å²åçå ¶ä»ç¼ºé»ï¼
- ç覽å¨é常éå¶æ¯åç¶²åç Cookie æ¸éä¸éï¼å ç覽å¨èç°ï¼é叏卿¸ç¾åå·¦å³ï¼ï¼ä»¥åæ¯å Cookie ç大å°ä¸éï¼éå¸¸çº 4KBï¼ãå²å API å¯ä»¥å²åæ´å¤§éçè³æã
- Cookie æé¨èæ¯åè«æ±ä¸èµ·å³éï¼å æ¤å¯è½æé使è½ï¼ä¾å¦å¨ç·©æ ¢çè¡åæ¸æé£ç·ä¸ï¼ï¼ç¹å¥æ¯ç¶ä½ è¨å®äºå¾å¤ Cookie æã
å註ï¼è¦æ¥çå²åç Cookieï¼ä»¥åç¶²é æ£å¨ä½¿ç¨çå ¶ä»å²åï¼ï¼ä½ å¯ä»¥å¨ Firefox éç¼è å·¥å ·ä¸ä½¿ç¨å²åç©ºéæª¢æ¸¬å¨ï¼æå¨ Chrome éç¼è å·¥å ·ä¸ä½¿ç¨æç¨ç¨å¼é¢æ¿ã
建ç«ãç§»é¤èæ´æ° Cookie
卿¶å° HTTP è«æ±å¾ï¼ä¼ºæå¨å¯ä»¥å¨åæä¸å³éä¸åæå¤å Set-Cookie æ¨é ï¼æ¯åæ¨é 齿è¨å®ä¸åç¨ç«ç Cookieãè¨å® Cookie çæ¹å¼æ¯æå®ä¸åéµå¼å°ï¼å¦ä¸æç¤ºï¼
Set-Cookie: <cookie-name>=<cookie-value>
ä»¥ä¸ HTTP åææç¤ºæ¥æ¶çç覽å¨å²åä¸å° Cookieï¼
HTTP/2.0 200 OK
Content-Type: text/html
Set-Cookie: yummy_cookie=chocolate
Set-Cookie: tasty_cookie=strawberry
[é é¢å
§å®¹]
å註ï¼äºè§£å¦ä½å¨å種伺æå¨ç«¯èªè¨ï¼æ¡æ¶ä¸ä½¿ç¨ Set-Cookie æ¨é ï¼PHPãNode.jsãPythonãRuby on Railsã
ç¶ç¼åºæ°è«æ±æï¼ç覽å¨é常æå°å
åçºç®åç¶²åå²åç Cookieï¼å¨ Cookie HTTP æ¨é ä¸å³å給伺æå¨ï¼
GET /sample_page.html HTTP/2.0
Host: www.example.org
Cookie: yummy_cookie=chocolate; tasty_cookie=strawberry
ç§»é¤ï¼å®ç¾© Cookie ççå½é±æ
ä½ å¯ä»¥æå®ä¸åå°ææ¥æææé段ï¼å¨æ¤ä¹å¾ Cookie æè¢«åªé¤ä¸ä¸åå³éãæ ¹æå»ºç« Cookie æå¨ Set-Cookie æ¨é ä¸è¨å®ç屬æ§ï¼å®åå¯ä»¥æ¯æ°¸ä¹
æ§ææè©±æ§ Cookieï¼
-
æ°¸ä¹ æ§ Cookie æå¨
Expireså±¬æ§æå®çæ¥æä¹å¾è¢«åªé¤ï¼httpSet-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT;æå¨
Max-Ageå±¬æ§æå®çæé段ä¹å¾ï¼httpSet-Cookie: id=a3fWa; Max-Age=2592000å註ï¼
Expiresçå¯ç¨æéæ¯Max-Ageé·ï¼ä½Max-Ageè¼ä¸æåºé¯ï¼ä¸¦ä¸å¨å ©è é½è¨å®æå ·æåªå æ¬ãéèå¾ççç±æ¯ï¼ç¶ä½ è¨å®Expiresçæ¥æåæéæï¼å®åæ¯ç¸å°æ¼è¨å® Cookie çç¨æ¶ç«¯ãå¦æä¼ºæå¨çæéè¨å®ä¸åï¼å¯è½æå°è´é¯èª¤ã -
æè©±æ§ Cookieââæ²æ
Max-AgeæExpires屬æ§ç Cookieââæå¨ç®åæè©±çµææè¢«åªé¤ãç覽å¨å®ç¾©äºãç®åæè©±ãä½æçµæï¼æäºç覽å¨å¨éæ°ååææä½¿ç¨æè©±éåãéå¯è½å°è´æè©±æ§ Cookie ç¡éæå°æçºåå¨ãå註ï¼å¦æä½ çç¶²ç«å°ä½¿ç¨è é²è¡èº«ä»½é©èï¼å®æè©²å¨ä½¿ç¨è æ¯æ¬¡é©èæéæ°çæä¸¦éæ°å³éæè©±æ§ Cookieï¼å³ä½¿æ¯å·²ç¶åå¨ç Cookieãéç¨®æ¹æ³æå©æ¼é²æ¢æè©±åºå®æ»æï¼å¨éç¨®æ»æä¸ï¼ç¬¬ä¸æ¹å¯ä»¥éè¤ä½¿ç¨ä½¿ç¨è çæè©±ã
æä¸äºæè¡æ¨å¨å¨ Cookie 被åªé¤å¾éæ°å»ºç«å®åãéäºè¢«ç¨±çºãæ®å±ãcookieãéäºæè¡éåäºä½¿ç¨è é±ç§åæ§å¶çååï¼å¯è½éåè³æé±ç§æ³è¦ï¼ä¸¦å¯è½ä½¿ä½¿ç¨å®åçç¶²ç«é¢è¨æ³å¾è²¬ä»»ã
æ´æ° Cookie å¼
è¦éé HTTP æ´æ° Cookieï¼ä¼ºæå¨å¯ä»¥å³éä¸å帶æç¾æ Cookie åç¨±åæ°å¼ç Set-Cookie æ¨é ãä¾å¦ï¼
Set-Cookie: id=new-value
ä½ å¯è½åºæ¼å¤ç¨®åå æ³è¦é樣åï¼ä¾å¦ï¼å¦æä½¿ç¨è æ´æ°äºä»åçå好ï¼èæç¨ç¨å¼å¸æå¨ç¨æ¶ç«¯è³æä¸åæ éäºè®æ´ï¼ä½ ä¹å¯ä»¥ä½¿ç¨ç¨æ¶ç«¯å²åæ©å¶ï¼å¦ Web Storage ä¾å¯¦ç¾ï¼ã
éé JavaScript æ´æ° Cookie
å¨ç覽å¨ä¸ï¼ä½ å¯ä»¥ä½¿ç¨ Document.cookie å±¬æ§æé忥ç Cookie Store API éé JavaScript å»ºç«æ°ç Cookieãè«æ³¨æï¼ä»¥ä¸ææç¯ä¾é½ä½¿ç¨ Document.cookieï¼å çºå®æ¯æå»£æ³æ¯æ´ï¼ææççé¸é
ã
document.Cookie = "yummy_cookie=chocolate";
document.Cookie = "tasty_cookie=strawberry";
ä½ ä¹å¯ä»¥ååç¾æç Cookie 並çºå
¶è¨å®æ°å¼ï¼åææ¯å®åæ²æè¨å® HttpOnly 屬æ§ï¼å³å¨å»ºç«å®ç Set-Cookie æ¨é ä¸ï¼ï¼
console.log(document.cookie);
// 輸åºãyummy_cookie=chocolate; tasty_cookie=strawberryã
document.Cookie = "yummy_cookie=blueberry";
console.log(document.cookie);
// 輸åºãtasty_cookie=strawberry; yummy_cookie=blueberryã
è«æ³¨æï¼åºæ¼å®å
¨ç®çï¼ä½ å¨åå§åè«æ±æä¸è½ç´æ¥ééå³éæ´æ°ç Cookie æ¨é 便´æ¹ Cookie å¼ï¼ä¾å¦ï¼éé fetch() æ XMLHttpRequestãè«æ³¨æï¼ä¹æå
åççç±ä¸æå
許 JavaScript ä¿®æ¹ Cookieââå³å¨å»ºç«æè¨å® HttpOnlyãæéæ´å¤è©³ç´°è¨æ¯ï¼è«åè¦å®å
¨æ§ä¸ç¯ã
å®å ¨æ§
ç¶ä½ å¨ Cookie ä¸å²åè¨æ¯æï¼é è¨æ æ³ä¸ï¼ææ Cookie å¼å°çµç«¯ä½¿ç¨è 齿¯å¯è¦çï¼ä¸¦ä¸å¯ä»¥è¢«ä»åæ´æ¹ãä½ çµå°ä¸å¸æä½ ç Cookie 被濫ç¨ââä¾å¦è¢«æ¡æè¡çºè ååï¼ä¿®æ¹ï¼æè¢«å³éå°ä¸æå³éçç¶²åãæ½å¨ç徿å¯è½å¾æ±äººçââæç¨ç¨å¼ç¡æ³éä½æè¡¨ç¾åºå¥æªçè¡çºââå°ç½é£æ§çãä¾å¦ï¼ç¯ç½ªååå¯ä»¥ç«åä¸å session IDï¼ä¸¦ç¨å®ä¾è¨å®ä¸å Cookieï¼ä½¿å ¶çèµ·ä¾åæ¯ä»¥å¦ä¸å人ç身份ç»å ¥ï¼å¾èæ§å¶ä»åçéè¡æé»ååå帳æ¶ã
ä½ å¯ä»¥ç¨å¤ç¨®æ¹å¼ä¿è·ä½ ç Cookieï¼æ¬ç¯å°å°æ¤é²è¡åé¡§ã
黿å°ä½ Cookie çåå
ä½ å¯ä»¥ééå
©ç¨®æ¹å¼ç¢ºä¿ Cookie å®å
¨å³éï¼ä¸ä¸æè¢«éé æçåæ¹æè
³æ¬ååï¼ä½¿ç¨ Secure 屬æ§å HttpOnly 屬æ§ï¼
Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly
-
帶æ
Secure屬æ§ç Cookie å æéé HTTPS åå®ä»¥å å¯è«æ±å³éè³ä¼ºæå¨ã宿°¸é 䏿èä¸å®å ¨ç HTTP ä¸èµ·å³éï¼localhost é¤å¤ï¼ï¼éæå³èä¸éäººæ»æè ç¡æ³è¼æååå®ãä¸å®å ¨çç¶²ç«ï¼URL ä¸å¸¶æhttp:ï¼ç¡æ³è¨å®å¸¶æSecure屬æ§ç Cookieã使¯ï¼ä¸è¦ä»¥çºSecureå¯ä»¥é²æ¢å° Cookie 䏿æè¨æ¯çææååãä¾å¦ï¼ææ¬ååç¨æ¶ç«¯ç¡¬ç¢ï¼æ JavaScriptï¼å¦ææªè¨å®HttpOnly屬æ§ï¼ç人å¯ä»¥è®ååä¿®æ¹è¨æ¯ã -
帶æ
HttpOnly屬æ§ç Cookie ä¸è½è¢« JavaScript ååï¼ä¾å¦ä½¿ç¨Document.cookieï¼å®åªè½å¨å°é伺æå¨æè¢«ååãä¾å¦ï¼æä¹ å使ç¨è æè©±ç Cookie æè©²è¨å®HttpOnly屬æ§ââè®å®åå° JavaScript å¯ç¨æé常ä¸å®å ¨ãéé é 鲿ªæ½æå©æ¼æ¸è¼è·¨ç¶²ç«æä»¤ç¢¼æ»æï¼XSSï¼ã
åè¨»ï¼æ ¹ææç¨ç¨å¼çä¸åï¼ä½ å¯è½å¸æä½¿ç¨ä¸åç±ä¼ºæå¨æ¥è©¢çä¸éæèå¥ç¢¼ï¼è䏿¯ç´æ¥å¨ Cookie ä¸å²åææè¨æ¯ï¼æè ç ç©¶æ¿ä»£ç身份é©èï¼æ©å¯æ§æ©å¶ï¼ä¾å¦ JSON Web Tokenã
å®ç¾© Cookie çå³éä½ç½®
Domain å Path 屬æ§å®ç¾©äº Cookie çç¯åï¼Cookie 被å³éå°åªäº URLã
-
Domainå±¬æ§æå®åªå伺æå¨å¯ä»¥æ¥æ¶ Cookieã妿æå®ï¼Cookie 卿å®ç伺æå¨åå ¶åç¶²åä¸å¯ç¨ãä¾å¦ï¼å¦æä½ å¾mozilla.orgè¨å®Domain=mozilla.orgï¼Cookie å¨è©²ç¶²ååådeveloper.mozilla.org鿍£çåç¶²åä¸é½å¯ç¨ãhttpSet-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly; Domain=mozilla.org妿
Set-Cookieæ¨é æªæå®Domain屬æ§ï¼å Cookie å¨è¨å®å®ç伺æå¨ä¸å¯ç¨ï¼ä½ä¸å¨å ¶åç¶²åä¸ãå æ¤ï¼æå®Domainæ¯çç¥å®éå¶æ´å°ãè«æ³¨æï¼ä¼ºæå¨åªè½å°Domain屬æ§è¨å®çºå ¶èªå·±çç¶²åæç¶ç¶²åï¼èä¸è½è¨å®çºåç¶²åæå ¶ä»ç¶²åãå æ¤ï¼ä¾å¦ï¼ç¶²åçºfoo.example.comç伺æå¨å¯ä»¥å°å±¬æ§è¨å®çºexample.comæfoo.example.comï¼ä½ä¸è½è¨å®çºbar.foo.example.comæelsewhere.comï¼ä¸é Cookie ä»ç¶æè¢«å³éå°åbar.foo.example.com鿍£çåç¶²åï¼ãæéæ´å¤è©³ç´°è¨æ¯ï¼è«åè¦ç¡æç¶²åã -
Pathå±¬æ§æç¤ºè«æ±ç URL ä¸å¿ é åå¨ç URL è·¯å¾ï¼ä»¥ä¾¿å³éCookieæ¨é ãä¾å¦ï¼httpSet-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly; Path=/docs%x2Fï¼ã/ãï¼åå 被è¦çºç®éåé符ï¼åç®é乿å¹é ãä¾å¦ï¼å¦æä½ è¨å®Path=/docsï¼éäºè«æ±è·¯å¾æå¹é ï¼/docs/docs//docs/Web//docs/Web/HTTP
ä½éäºè«æ±è·¯å¾ä¸æï¼
//docsets/fr/docs
å註ï¼
path屬æ§è®ä½ æ ¹æç¶²ç«çä¸åé¨å便§å¶ç覽å¨å³éåªäº Cookieãå®ä¸æ¯ä½çºå®å ¨æªæ½ï¼ä¸¦ä¸ä¸è½é²æ¢å¾ä¸åè·¯å¾æªç¶ææ¬å°è®å Cookieã
ä½¿ç¨ SameSite æ§å¶ç¬¬ä¸æ¹ Cookie
SameSite 屬æ§è®ä¼ºæå¨å¯ä»¥æå®æ¯å¦ï¼ä½æé¨è·¨ç«è«æ±å³é Cookieââå³ç¬¬ä¸æ¹ Cookieãè·¨ç«è«æ±æ¯æç¶²ç«ï¼å¯è¨»åçç¶²åï¼åï¼æåå®ï¼http æ httpsï¼è使ç¨è
ç®åæ£å¨è¨ªåçç¶²ç«ä¸å¹é
çè«æ±ãéå
æ¬å¨å
¶ä»ç¶²ç«ä¸é»æé£çµä»¥å°èªå°ä½ çç¶²ç«æå³éçè«æ±ï¼ä»¥åç±åµå
¥çç¬¬ä¸æ¹å
§å®¹å³éçä»»ä½è«æ±ã
SameSite æå©æ¼é²æ¢è¨æ¯æ´©æ¼ï¼ä¿è·ä½¿ç¨è
é±ç§ä¸¦æä¾ä¸äºéå°è·¨ç«è«æ±å½é æ»æçä¿è·ã宿ä¸åå¯è½çå¼ï¼StrictãLax å Noneï¼
-
Strictæä½¿ç覽å¨å å¨åææºèª Cookie åå§ç¶²ç«çè«æ±ææå³é Cookieãç¶ä½ æèåè½ç¸éç Cookieï¼èéäºåè½ç¸½æ¯å¨åå§å°èªä¹å¾ï¼ä¾å¦èº«ä»½é©èæå²åè³¼ç©è»è¨æ¯æï¼æè©²ä½¿ç¨æ¤è¨å®ãhttpSet-Cookie: cart=110045_77895_53420; SameSite=Strictå註ï¼ç¨æ¼ææè¨æ¯ç Cookie ä¹æè©²æè¼çççå½é±æã
-
Laxèæ¤é¡ä¼¼ï¼åªæ¯ç覽å¨å¨ä½¿ç¨è å°èªå° Cookie çåå§ç¶²ç«æä¹æå³é Cookieï¼å³ä½¿ä½¿ç¨è ä¾èªä¸åçç¶²ç«ï¼ãéå°æ¼å½±é¿ç¶²ç«é¡¯ç¤ºç Cookie 徿ç¨ââä¾å¦ï¼ä½ çç¶²ç«ä¸å¯è½æåä½å¤¥ä¼´çç¢åè¨æ¯ä»¥åä¸åè¯çé£çµãç¶ä½¿ç¨è è·é¨è©²é£çµå°åä½å¤¥ä¼´ç¶²ç«æï¼ä»åå¯è½å¸æè¨å®ä¸å Cookieï¼èªªæè©²è¯çé£çµè¢«è·é¨ï¼å¦æè³¼è²·äºç¢åï¼åæé¡¯ç¤ºç嵿©«å¹ 並æä¾ææ£ãhttpSet-Cookie: affiliate=e4rt45dw; SameSite=Lax -
Noneæå® Cookie å¨åå§è«æ±åè·¨ç«è«æ±ä¸é½æè¢«å³éãå¦æä½ æ³å° Cookie èå¾åµå ¥å¨å ¶ä»ç¶²ç«ä¸çç¬¬ä¸æ¹å §å®¹ç¼åºçè«æ±ä¸èµ·å³éï¼ä¾å¦å»£åæè¡æåææä¾åï¼é就徿ç¨ãè«æ³¨æï¼å¦æè¨å®äºSameSite=Noneï¼åéå¿ é è¨å®Secure屬æ§ââSameSite=Noneéè¦ä¸åå®å ¨ä¸ä¸æãhttpSet-Cookie: widget_session=7yjgj57e4n3d; SameSite=None; Secure; HttpOnly
妿æªè¨å® SameSite 屬æ§ï¼å Cookie é è¨è¢«è¦çº Laxã
Cookie åç¶´
ç±æ¼ Cookie æ©å¶çè¨è¨ï¼ä¼ºæå¨ç¡æ³ç¢ºèª Cookie æ¯å¦å¾å®å ¨ä¾æºè¨å®ï¼çè³ç¡æ³ç¥é Cookie æåæ¯å¨åªè£¡è¨å®çã
åç¶²åä¸çæç¨ç¨å¼å¯ä»¥è¨å®å¸¶æ Domain 屬æ§ç Cookieï¼éä½¿å¾ææå
¶ä»åç¶²åé½å¯ä»¥åå該 Cookieãé種æ©å¶å¯è½å¨æè©±åºå®æ»æä¸è¢«æ¿«ç¨ã
ç¶èï¼ä½çºä¸ç¨®ç¸±æ·±é²ç¦¦æªæ½ï¼ä½ å¯ä»¥ä½¿ç¨ Cookie åç¶´ä¾æ·è¨éæ¼ Cookie çç¹å®äºå¯¦ãæå ©ç¨®åç¶´å¯ç¨ï¼
__Host-ï¼å¦æ Cookie å稱æéååç¶´ï¼å®åªæå¨åææ¨è¨äºSecure屬æ§ãå¾å®å ¨ä¾æºå³éãä¸å å«Domain屬æ§ï¼ä¸¦ä¸Path屬æ§è¨å®çº/çæ æ³ä¸ï¼ææå¨Set-Cookieæ¨é ä¸è¢«æ¥åãæå¥è©±èªªï¼éå Cookie æ¯ç¶²åéå®çã__Secure-ï¼å¦æ Cookie å稱æéååç¶´ï¼å®åªæå¨æ¨è¨äºSecure屬æ§ä¸¦å¾å®å ¨ä¾æºå³éçæ æ³ä¸ï¼ææå¨Set-Cookieæ¨é ä¸è¢«æ¥åã鿝__Host-åç¶´å¼±ã
çè¦½å¨ææçµä¸ç¬¦åå ¶éå¶ç帶æéäºåç¶´ç Cookieãé確ä¿äºç±åç¶²å建ç«ç帶æåç¶´ç Cookie è¦éº¼è¢«éå¶å¨ä¸ååç¶²åå §ï¼è¦éº¼è¢«å®å ¨å¿½ç¥ãç±æ¼æç¨ç¨å¼ä¼ºæå¨å¨ç¢ºå®ä½¿ç¨è æ¯å¦å·²é©èæ CSRF æ¬ææ¯å¦æ£ç¢ºæåªæª¢æ¥ç¹å®ç Cookie å稱ï¼é實éä¸èµ·å°äºé²ç¦¦æè©±åºå®æ»æçä½ç¨ã
å註ï¼å¨ä¼ºæå¨ä¸ï¼ç¶²é æç¨ç¨å¼å¿
é æª¢æ¥å
å«åç¶´ç宿´ Cookie å稱ã使ç¨è
代çå¨è«æ±ç Cookie æ¨é ä¸å³é Cookie ä¹åï¼ä¸æå¾ Cookie ä¸åé¢åç¶´ã
æé Cookie åç¶´åç®åçè¦½å¨æ¯æ´çæ çæ´å¤è¨æ¯ï¼è«åè¦ Set-Cookie åèæç« çåç¶´é¨åã
é±ç§è追蹤
å颿åè«å°å¦ä½ä½¿ç¨ SameSite 屬æ§ä¾æ§å¶ä½æå³éç¬¬ä¸æ¹ Cookieï¼ä»¥åéå¦ä½æå©æ¼ä¿è·ä½¿ç¨è
é±ç§ãå¨å»ºç«ç¶²ç«æï¼é±ç§æ¯ä¸åé常éè¦çèéï¼å¦æåå¾å¥½ï¼å¯ä»¥è使ç¨è
建ç«ä¿¡ä»»ã妿åå¾ä¸å¥½ï¼åæå®å
¨ä¾µèé種信任並å°è´å種å
¶ä»åé¡ã
ç¬¬ä¸æ¹ Cookie å¯ä»¥ç±éé <iframe> åµå
¥ç¶²ç«çç¬¬ä¸æ¹å
§å®¹è¨å®ãå®åæè¨±å¤åæ³ç¨éï¼å
æ¬å
±äº«ä½¿ç¨è
åäººè³æè¨æ¯ãè¨ç®å»£åæå
次æ¸ï¼æå¨ä¸åç¸éç¶²åä¹éæ¶éåæè³æã
ç¶èï¼ç¬¬ä¸æ¹ Cookie ä¹å¯ç¨æ¼å»ºç«ä»¤äººæ¯éª¨æç¶ãä¾µå ¥æ§ç使ç¨è é«é©ãç¬¬ä¸æ¹ä¼ºæå¨å¯ä»¥æ ¹æåä¸åç覽å¨å¨ååå¤åç¶²ç«æå³é給å®ç Cookieï¼ä¾å»ºç«ä½¿ç¨è ç覽æ·å²åç¿æ £çåäººè³æãå ¸åçä¾åæ¯ï¼ç¶ä½ å¨ä¸åç¶²ç«ä¸æå°ç¢åè¨æ¯å¾ï¼ç¡è«ä½ èµ°å°åªè£¡ï¼ç¶²è·¯ä¸é½æåºç¾é¡ä¼¼ç¢åç廣å追èä½ è·ã
ç覽å¨ä¾æåç¥é使ç¨è ä¸åæ¡é種è¡çºï¼å æ¤é½å·²éå§é è¨é»æç¬¬ä¸æ¹ Cookieï¼æè³å°å·²è¨åæéåæ¹åç¼å±ãç¬¬ä¸æ¹ Cookieï¼æç¨±è¿½è¹¤ Cookieï¼ä¹å¯è½è¢«å ¶ä»ç覽å¨è¨å®ææ´å åè½é»æã
å註ï¼é»æ Cookie å¯è½æå°è´ä¸äºç¬¬ä¸æ¹çµä»¶ï¼ä¾å¦ç¤¾ç¾¤åªé«å°å·¥å ·ï¼ç¡æ³æé æéä½ãé¨èç覽å¨å°ç¬¬ä¸æ¹ Cookie æ½å æ´å¤éå¶ï¼éç¼è æè©²éå§å°æ¾æ¸å°å°å ¶ä¾è³´çæ¹æ³ã
æéç¬¬ä¸æ¹ Cookieãç¸éåé¡ä»¥åå¯ç¨æ¿ä»£æ¹æ¡çè©³ç´°è¨æ¯ï¼è«åè¦æåçç¬¬ä¸æ¹ Cookie æç« ãæéé±ç§çä¸è¬è¨æ¯ï¼è«åè¦æåçé±ç§èé¸é ã
Cookie ç¸éæ³è¦
æ¶µè Cookie 使ç¨çç«æ³ææ³è¦å æ¬ï¼
- æççéç¨è³æä¿è·è¦åï¼GDPRï¼
- æççé»åé±ç§æä»¤
- å å·æ¶è²»è é±ç§æ³
éäºæ³è¦å ·æå ¨çå½±é¿åãå®åé©ç¨æ¼å ¨çè³è¨ç¶²ä¸ä»»ä½ä½¿ç¨è å¾éäºå¸æ³ç®¡è½åï¼æçåå å·ï¼ååçç¶²ç«ï¼ä½å å·æ³å¾å é©ç¨æ¼ç¸½æ¶å ¥è¶ é 2500 è¬ç¾å ç實é«çæ æ³ï¼ã
éäºæ³è¦å æ¬ä»¥ä¸è¦æ±ï¼
- éç¥ä½¿ç¨è ä½ çç¶²ç«ä½¿ç¨ Cookieã
- å 許使ç¨è 鏿éåºæ¥æ¶é¨åæå ¨é¨ Cookieã
- å 許使ç¨è å¨ä¸æ¥æ¶ Cookie çæ æ³ä¸ä½¿ç¨ä½ ç大é¨åæåã
ä½ æå¨çå°åå¯è½éæå ¶ä»ç®¡ç Cookie 使ç¨çæ³è¦ãä½ æè²¬ä»»äºè§£ä¸¦éµå®éäºæ³è¦ãæäºå ¬å¸æä¾ãCookie æ©«å¹ ãç¨å¼ç¢¼ï¼å¹«å©ä½ éµå®éäºæ³è¦ã
å註ï¼å ¬å¸æåºæ¼éæåº¦ç®ç並çºéµå®æ³è¦ï¼å¨å ¶ç¶²ç«ä¸æ«é²ä»å使ç¨ç Cookie é¡åãä¾å¦ï¼åè¦ Google éæ¼å ¶ä½¿ç¨ç Cookie é¡åçéç¥å Mozilla çç¶²ç«ãéè¨è Cookie é±ç§è²æã
åè¦
- ç¸éç HTTP æ¨é ï¼
Set-CookieãCookie - ç¸éç JavaScript APIï¼
Document.cookieãNavigator.cookieEnabledãCookie Store API - ç¬¬ä¸æ¹ Cookie
- Cookie è¦ç¯ï¼RFC 6265
- CookieãGDPR åé»åé±ç§æä»¤