二�的定义�
å½“ä½ åœ¨æµ�览网站的时å?™ï¼ŒWEB æœ�务器会先é?�一å°�å°�èµ„æ–™æ”¾åœ¨ä½ çš„è®¡ç®—æœºä¸Šï¼ŒCookie ä¼šå¸®ä½ åœ¨ç½‘ç«™ä¸Šæ‰€æ‰“çš„æ–‡å—æˆ–是ä¸?些é?‰æ‹©ï¼?
都纪录下æ�¥ã?‚当下æ?ä½ å†�光临å�Œä¸€ä¸?½‘站,WEB æœ�务器会先看看有没有它上次留下的 Cookie 资料,有的è¯�,就会ä¾�æ�?Cookie
里的内å?æ�¥åˆ¤æ–?½¿ç”¨è?…,é€�å‡ºç‰¹å®šçš„ç½‘é¡µå†…å®¹ç»™ä½ ã??Cookie 的使用很æ™?��,è?多有æ��ä¾›ä¸?ººåŒ–æœ�务的网站,都æ˜?ˆ©ç”?Cookie
æ�¥è¾¨è®¤ä½¿ç”¨è?…,以方便é?�出使用者é‡�èº?®šå�šçš„内å?,åƒ�æ˜?Web 接å�£çš„å…�è´?email 网站,都è¦�用åˆ?Cookieã€?
具体æ�¥è?cookie机制采用的是在å?户ç?ä¿�æŒ�状æ?�的方æ?,è?Œsession机制采用的是在æœ�务器ç«?¿�æŒ�状æ€�的方æ?ã€?
å�Œæ—¶æˆ‘们也看到,由于采用æœ�务器ç?ä¿�æŒ�状æ?�的方æ?在å?户ç?也需è¦�ä¿�å˜ä¸€ä¸? ‡è¯†ï¼Œæ‰?ä»?ession机制å�?ƒ½éœ?è¦�å?ŸåŠ©äºŽcookie机制
æ�¥è¾¾åˆ°ä¿�å˜æ ‡è¯†çš„ç›?š„,但实际上它还有其他选择ã€?
cookie机制。æ?统的cookie分å�‘æ˜??šè¿‡æ‰©å±•HTTPå��è?æ�¥å®žçŽ°çš„ï¼Œæœ�务器通过在HTTPçš„å“�应头ä¸?Š ä¸Šä¸€è¡Œç‰¹æ®Šçš„æŒ‡ç¤ºä»¥æ��ç¤?
æµ�è?器按照指示生æˆ�相应的cookie。然而纯粹的客户ç«?„šæœ??JavaScript或è?…VBScript也å�¯ä»¥ç”Ÿæˆ�cookie。è?Œcookie的使ç”?
æ˜?”±æµ�è?器按照一定的原则在å�Žå�°è‡ªåЍå�‘é€�ç»™æœ�务器的。æµ�览器æ£?查所有å˜å‚¨çš„cookie,å?æžœæŸ�个cookieæ‰?声明的作用范å›?
大于ç‰äºŽå°†è?请求的资æº�所在的ä½�置,则把è?cookie附在请求资æº�çš„HTTP请求头上å�‘é?�ç»™æœ�务器ã??
cookie的内容主è¦�包æ‹?¼šå��å—,å?¼ï¼Œè¿‡æœŸæ—¶é—´ï¼Œè·¯å¾„和域ã?‚路径与域一起构æˆ�cookie的作用范围ã?‚è‹¥ä¸�è?ç½?¿‡æœŸæ—¶é—´ï¼Œåˆ™è¡¨ç¤ºè¿™
个cookie的生命期为æµ�览器会è¯�期间,关é—?µ�览器窗å�£ï¼Œcookie就消失ã?‚è¿™ç§�生命期为æµ�览器会è¯�期的cookieè¢?§°ä¸ºä¼šè¯�cookieã€?
会è¯�cookieä¸?èˆ?¸�å˜å‚¨åœ¨ç¡¬ç›˜ä¸Šè€Œæ˜¯ä¿�å˜åœ¨å†…å˜é‡Œï¼Œå½“ç„¶è¿™ç§�è?为并ä¸�是规范规定的ã?‚若设置了过期时间,æµ�è?器就会把cookie
ä¿�å˜åˆ°ç¡¬ç›˜ä¸Šï¼Œå…³é—?�Žå†�æ?打开æµ�è?å™?¼Œè¿™äº›cookieä»�然有效直到超过设定的过期时间ã?‚å˜å‚¨åœ¨ç¡?›˜ä¸Šçš„cookieå�?»¥åœ¨ä¸�å�Œçš„æµ?
览器进程间共äº?¼Œæ¯”å?两个IE窗å�£ã€‚è?Œå?于ä¿�å˜åœ¨å†…å˜é‡Œçš„cookie,ä¸�å�Œçš„æµ�è?器有ä¸�å�Œçš„å?ç�†æ–¹å¼?
session机制。session机制æ˜?¸€ç§�æœ�务器ç«?š„æœºåˆ¶ï¼Œæœ�务器使用ä¸?ç§�类似于散列表的结构(也å�?ƒ½å°±æ˜¯ä½¿ç”¨æ•£åˆ—è¡?¼‰æ�¥ä¿�å˜ä¿¡æ�???
当程åº�需è¦�为æŸ�个客户ç«?š„请求创建ä¸?个session时,æœ�务器é?å…ˆæ?查这ä¸??户ç?çš„è?求里æ˜?�¦å·²åŒ…å�?º†ä¸?个sessionæ ‡è¯†
(称为session id),如果已包å�?ˆ™è¯´æ˜Žä»¥å‰�å·²ç»�为æ?客户ç«?ˆ›å»ºè¿‡session,æœ�务器就按ç…?ession id把这个sessionæ£?索出æ�?
使用(æ?ç´?¸�到,会新建一ä¸?¼‰ï¼Œå?æžœå?户ç?请求ä¸�包å�«session id,则为æ?客户ç«?ˆ›å»ºä¸€ä¸ªsession并且生æˆ�ä¸?ä¸?¸Žæ?essionç›?
å…³è�”çš„session id,session idçš„å?¼åº”该是ä¸?ä¸?—¢ä¸�会é‡�å?,å�ˆä¸�å?易è?æ‰¾åˆ°è§„å¾‹ä»¥ä»¿é€ çš„å—ç?串,这个session idå°†è?在本次å“�åº?
ä¸?¿”回给客户ç«?¿�å˜ã?‚ä¿�å˜è¿™ä¸ªsession id的方å¼�å�¯ä»¥é‡‡ç”¨cookieï¼Œè¿™æ ·åœ¨äº¤äº’è¿‡ç¨‹ä¸?µ�览器å�?»¥è‡?Š¨çš„æŒ‰ç…§è?åˆ™æŠŠè¿™ä¸ªæ ‡è¯†å�‘é?�ç»™
æœ�务器ã?‚一èˆ?¿™ä¸ªcookieçš„å��å—都æ˜?±»ä¼¼äºŽSEEESIONID。但cookieå�?»¥è¢?ººä¸ºçš„ç¦�æ?,则必须有其他机制以便在cookieè¢??æ¢æ—¶
ä»�然能å?把session idä¼ é?’回æœ�务器ã??
ç»�常è¢?½¿ç”¨çš„ä¸?ç§�技æœ?�«å�šURLé‡�写,就æ˜?ŠŠsession idç›´æŽ¥é™„åŠ åœ¨URLè·?¾„çš„å�Žé�??‚还有一ç§�技æœ?�«å�šè¡¨å�•éš�è—�å—æ®µã?‚å°±æ˜?œ�务器
会自动修改表å�•ï¼Œæ·»åŠ ä¸?ä¸?š�è—�å—æ®µï¼Œä»¥ä¾¿åœ¨è¡¨å�•æ��交时能å?把session idä¼ é?’回æœ�务器ã?‚比如:
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
实际上这ç§�技æœ?�¯ä»¥ç®€å�•的用å?action应用URLé‡�写æ�¥ä»£æ›¿ã??
cookie å’Œsession 的区åˆ?¼š
1ã€�cookieæ•°æ�®å˜æ”¾åœ¨å?户的æµ�è?器上,sessionæ•°æ�®æ”¾åœ¨æœ�务器上ã€?
2ã€�cookieä¸�是很安å…?¼Œåˆ?ººå�?»¥åˆ†æž�å˜æ”¾åœ¨æœ¬åœ°çš„COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
3ã€�session会在ä¸?定时间内ä¿�å˜åœ¨æœ�务器上ã?‚当访问增å?,会比较å� ç”¨ä½ æœ�务器的æ?§èƒ½
考虑到�轻�务器性能方�,应当使用COOKIE
4ã€�å�•个cookie在å?户ç?çš„é™�制是3K,就æ˜??ä¸?ä¸?«™ç‚¹åœ¨å®¢æˆ·ç«?˜æ”¾çš„COOKIEä¸�能3Kã€?
5ã€�所以个人建è®?¼š
将登陆信æ�?‰é‡�è?ä¿¡æ�¯å˜æ”¾ä¸ºSESSION
å…¶ä»–ä¿¡æ�¯å¦‚æžœéœ?è¦�ä¿�留,å�?»¥æ”¾åœ¨COOKIEä¸?
施�出����