JavaScript

   


Cookie (¦±©_)


²¤¶

Cookie §Þ³N¬O¦bÂsÄý¾¹Àx¦s¸ê°Tªº¤@ºØ¤èªk¡A ¦Ó³o¨Ç¸ê°T´NºÙ¬° Cookie ¡A ¦øªA¾¹¥i¥HÀx¦s¤@¨Ç¸ê°T¨ìÂsÄý¾¹¡A ¨ì¤U¦¸ÂsÄý¾¹¦A»P¦øªA¾¹·¾³q®É¡A ³o®É¸ê°T´N·|¶Ç¨ì¦øªA¾¹¡C Cookie §Þ³N¦b NN 2.0 ¶}©l¨Ï¥Î¡C

¨Ï¥Î Cookie ªº¨Ò¤l¡G

  • ¤ë¾ä°O¨ÆÃ¯¡G ±N­n°O¦íªº°T®§Àx¦s¦bÂsÄý¾¹¡A ¨ì¯S©wªº®É¶¡¼u¥X¸Ó°T®§
  • ­Ó¤H¤Æºô¯¸¡G °O¿ý§A¦b¬Yºô¯¸ªº³]©w¡A ¨Ò¦p­I´ºÃC¦â¡A ·í§A¤U¦¸¦A¨ì¸Ó¯¸®É´N·|¥Î§A©Ò³]©wªº­I´ºÃC¦â¡F °O¿ý§A¤§«e¦b¬Yºô¯¸ÂsÄý¨ì¨º¤@­¶¡A ¨ì¤U¦¸ÂsÄý¸Ó¯¸®É´N¦Û°Ê±a§A¨ì¸Ó­¶¡A ¸`¬ÙÂsÄý®É¶¡
  • µn¤J«O¦w¡G ·í§Aµn¤J¬Yºô¯¸®É¡A ¦øªA¾¹·|°O¿ý¤@¨Ç¸ê°T¨ìÂsÄý¾¹¡A ¥H½T©w§A¬O§_¨º­Óµn¤Jªº¨Ï¥ÎªÌ

HTTP ¦p¦ó¹B§@

¥H¤U¬O¤j·§ªº HTTP ¹B§@¡G

  1. ·íÂsÄý¾¹­n¨D¬Y­Ó URL (¨Ò¦pºô­¶ªº URL) ®É¡A ´N·|±N¤@­Ó HTTP ­n¨D (HTTP Request) ¶Ç°e¨ì¦øªA¾¹¡A ³o­ÓRequest ªº header ¥]§t¤F¤@¨Ç¸ê°T¡A ¨Ò¦p¸Ó­¶ªº¸ô®|¦WºÙ¡C
  2. ¦øªA¾¹¦¬¨ì Request «á¡A ´N·|¶Ç¦^¤@­Ó HTTP ¤ÏÀ³ (HTTP Response) ¨ìÂsÄý¾¹¡A ³o­Ó Response ¤]¦³¤@­Ó header¡A ¥¦¥]§t¤F¸Ó­¶ªº¤@¨Ç¸ê°T¡A ¨Ò¦p MIME «¬ºA¡C

Request ©M Response ªº header ³£¥]§t¤F³\¦hÄæ¸ê°T¡A ¦Ó¨C¤@Äæªº°ò¥»®æ¦¡¦p¤U¡G

Field-name: infomation

¨Ò¤l¡G HTTP Request Header

GET http://home4u.hongkong.com/entertainment/music/mpx/js/header.htm HTTP/1.1
HOST: home4u.hongkong.com
ACCEPT: */*
User-Agent: NetAnts/1.0

¨Ò¤l¡G HTTP Response Header

HTTP/1.0 200 Document Follows
Date: Tue, 17 Aug 1999 08:59:10 GMT
Server: NCSA/1.3
Content-Type: text/html
Last-Modified: Tue, 17 Aug 1999 08:54:38 GMT
Content-Length: 80

<html><head><title> HTTP Header </title>
<body>
Hello, world
</body>
</html>

»¡©ú¡G

  • ¨Ò¤l¤¤©Ò¦³¤º®e³£¬O¦øªA¾¹¶Ç¦^ÂsÄý¾¹ªºªF¦è¡A ¦Ó <html> ¼Ð°O¤§«eªºªF¦è´N¬O Header ¤F¡A Header ¥]§t¤F¤@¨Ç­«­n¸ê°T¡A ¨Ò¦p Conent-Type: text/html¡A ¥Î¨Ó§i¶DÂsÄý¾¹¡A ¤º®eªº MIME «¬ºA¬O text/html¡F Header »P <html> ¤¤¶¡¹j¤F¤@¦æ¡A ¬O¥Î¨Ó§i¶DÂsÄý¾¹¨ºùجO Header ªºµ²§À¡C

Cookie ¦p¦ó¹B§@

¥H¤U¬O Cookie ªºÂ²³æ¹B§@¡G

  1. ·í¦øªA¾¹¦¬¨ìÂsÄý¾¹ªº Request «á¡A ´N¶Ç¦^¤@­Ó HTTP Response ¨ìÂsÄý¾¹¡A ³o­Ó Response ªº Header ¥i¥H¥]§t¤F¤@­Ó©ÎªÌ¦h­Ó Set-Cookie Äæ¡A ³o¤@Äæ¥]§t¤F¦øªA¾¹·QÀx¦sªº Cookie ¸ê°T¡A ¨Ò¦p³o­Ó Cookie ªº¦WºÙ¡B ­È¡B ¦³®Ä¤é´Á¡B «O¦w©Ê¡B ¥i¨Ï¥Îªººô°ì©M¸ô®|¦WºÙµ¥¡C
  2. ÂsÄý¾¹´N·|±N Cookie Àx¦s°_¨Ó¡A ³q±`Àx¦s¦b¤@­ÓÀɮפº¡C
  3. ¤§«á·íÂsÄý¾¹­n¨D¬Y¤@­Óºô­¶®É¡A ÂsÄý¾¹·|Àˬd¥¦Àx¦s¤Fªº Cookie ¬O§_¤¹³\³Q¨º¤@­Óºô­¶¦s¨ú¡A ¦pªG¬O¤¹³\ªº¸Ü¡A ´N·|¦b HTTP Request Header ¥[¤J Cookie ¤@Äæ¡A ¤@¦P¶Ç°e¨ì¦øªA¾¹¡C

Set-Cookie ©M Cookie

HTTP Response Header ¦³¤@Äæ¬O Set-Cookie¡A ·í¦øªA¾¹·Q¦bÂsÄý¾¹Àx¦s¸ê°T®É´N·|¥[¤J³oÄæ¡C ¥¦ªº°ò¥»®æ¦¡¦p¤U¡G

Set-Cookie: name=value; expires=date; path=path; domain=domain; secure

®æ¦¡´N¦p Name/Value Pair ¤@¼Ë¡A ¦Ó¨C­Ó Name/Value Pair ³£³Q¤À¸¹ (;) ¤À¹j¡C

»¡©ú¡G

°Ñ¼Æ »¡©ú
name=value name ¬O Cookie ªº¦WºÙ¡A value ¬O¸Ó Cookie ªº­È¡A ³o­Ó¦r¦ê·|¥H 16 ¶i¨î½s½X¡C ¤­­Ó°Ñ¼Æ¤§¤¤¡A ¥u¦³³o­Ó°Ñ¼Æ¬O¥²»Ýªº¡C
expires=date «ü©w Cookie ªº¦³®Ä¤é´Á¡A ·í¹L¤F¦³®Ä¤é´Á«á¡A ¨º­Ó Cookie ´N¤£·|¦AÀx¦s¦bÂsÄý¾¹¡F date ¬O GMT ®æ¦¡ªº¦³®Ä¤é´Á¡C ¦pªG¤£«ü©w³o­Ó°Ñ¼Æ¡A ¸Ó Cookie ªº¦³®Ä¤é´Á´N¬O¨Ï¥ÎªÌ°h¥XÂsÄý¾¹®É (End of Browser Session)
path=path «ü©w¥i¥H¦s¨ú¸Ó Cookie ªº¸ô®|¡A ¦pªGÂsÄý¾¹­n¨Dªº URL ¥G¦X Cookie ªººô°ì©M¸ô®|¦WºÙ (domain ©M path)¡A ´N·|¶Ç°e¸Ó Cookie ¨ì¦øªA¾¹¡C ¦pªG¤£«ü©w³o­Ó°Ñ¼Æ¡A path ´N«ü©w¬°³]©w¸Ó Cookie ªººô­¶©Ò¦bªº¸ô®|
domain=domain «ü©w¥i¥H¦s¨ú¸Ó Cookie ªººô°ì¡C ¦pªG¤£«ü©w³o­Ó°Ñ¼Æ¡A domain ´N«ü©w¬°³]©w¸Ó Cookie ªººô­¶©Ò¦bªººô°ì
secure «ü©w Cookie ¥u¥i¥H¶Ç°eµ¹ HTTPS ¦øªA¾¹ (¥Î SSL ªº HTTP ¦øªA¾¹)

¡@

HTTP Request Header ¦³¤@Äæ¬O Cookie¡A ·íÂsÄý¾¹­n¨Dªº URL ²Å¦X¶Ç°e Cookie ªº±ø¥ó®É´N·|¥[¤J³oÄæ¡C ¥¦ªº°ò¥»®æ¦¡¦p¤U¡G

Cookie: name1=value1; name2=value2; ...

Cookie Äæ¥u¶·¥]§t Cookie ªº¦WºÙ©M­È¡A ¦Ó®æ¦¡©M Set-Cookie ¬Û¦ü¡A ¤]¬O¥Î¤À¸¹¤À¹j¨C­Ó Name/Value Pair¡C

¡@

Cookie »P CGI Script

¦øªA¾¹­n¨ú±oÂsÄý¾¹ªº Cookie ¸ê°T¨Ó§@°µ¤£¦Pªº¤u§@¡A ¤@¯ë³£·|¥Î CGI Script¡C

¥H¤U¬O¥Î CGI Script ¨Ó¦s¨ú Cookie ªº¹B§@¨Ò¤l¡G

  1. ÂsÄýªÌ­n¨D¬Y­Ó URL¡A ¦Ó³o­Ó URL ¬O¤@­Ó CGI Script ªº URL
  2. CGI Script ·|Àˬd¨º­Ó HTTP Request Header ¦³§_¥]§t Cookie ¤@Äæ
  3. ¦pªG¨S¦³ªº¸Ü¡A ´Nªí¥ÜÂsÄýªÌ¥i¯à¬O²Ä¤@¦¸­n¨D¸Ó URL
  4. ¦pªG¦³ªº¸Ü¡A ´Nªí¥ÜÂsÄýªÌ¥H«e´¿¸g­n¨D¸Ó URL¡A CGI Script Ū¨ú¸Ó Cookie ªº¸ê°T¨Ó°µ¤£¦Pªº¤u§@¡A ¨Ò¦p¶Ç¦^¤£¦P¤º®eªººô­¶
  • CGI Script ¤]¥i¥H¦b¨C¦¸¶Ç¦^ HTTP Response ®É³]©w Cookie¡A ¥H§ó·s Cookie ªº¤º®e¡C

¡@

Cookie »P JavaScript

¦pªG¥Î JavaScript ¨Ó¦s¨ú Cookie¡A ¨º»ò¦øªA¾¹¤£¥Î°õ¦æ CGI Script ¨Ó³]©w Cookie¡A ¤]¥i¥H¨ú±o¥Ñ JavaScript ³]©wªº Cookie¡A ¤j¤j´î¤Ö¤F¦øªA¾¹ªº¤u§@¡C

JavaScript ¬O¥Î document.cookie ³o­ÓÄݩʨӦs¨ú Cookie ªº¡A ¥H¤U¬O¥Î JavaScript ¨Ó¦s¨ú Cookie ªº¹B§@¨Ò¤l¡G

  1. ÂsÄýªÌ­n¨D¬Y­Ó HTML ºô­¶ªº URL¡A ¦Ó³o­Óºô­¶¤º¦³ JavaScript
  2. JavaScript ·|Ū¨ú document.cookie ªº¤º®e
  3. ¦pªG¨S¦³ªº¸Ü¡A ´Nªí¥ÜÂsÄýªÌ¥i¯à¬O²Ä¤@¦¸­n¨D¸Ó URL
  4. ¦pªG¦³ªº¸Ü¡A ´Nªí¥ÜÂsÄýªÌ¥H«e´¿¸g­n¨D¸Ó URL¡A JavaScript ·|Ū¨ú¸Ó Cookie ªº¸ê°T¨Ó°µ¤£¦Pªº¤u§@
  • JavaScript ¥i¥H§Y®É³]©w Cookie¡A ¦Ó¤£¶·»P¦øªA¾¹·¾³q¡C
  • name=value

¨Ò¤l¡G ¥Î JavaScript ³]©w 2 ­Ó Cookie js_tut_eg_cookie1.htm

<script>
function setck() {
document.cookie = "myname=Tom";
document.cookie = "myage=16";
alert("Cookies have been set")
}
</script>
<form>
<input type=button value="Set Cookie" onclick="setck()">
<input type=button value="document.cookie" onclick="alert(document.cookie)">
</form>

»¡©ú¡G

  • ¦pªG§A¬O²Ä¤@¦¸¨Ó¨ì¥»¯¸¡A ¨Ã¥B¤@¶}©l´N«ö "document.cookie" «ö¶s¡A ´N·|¨£¨ì document.cookie ªº­È¬OªÅ¥Õªº¡F ·í«ö¤U "Set Cookie" ¤§«á¡A ´N·|³]©w 2 ­Ó Cookie¡A ¤§«á¦A«ö¤U "document.cookie" «ö¶s®É¡A ´N·|¨£¨ì document.cookie ¦³³o 2 ­Ó Cookie ¤F¡C ¦]¬°¨S¦³³]©w¥¦­Ìªº¦³®Ä¤é´Á¡A ©Ò¥H·í§AÃö³¬ÂsÄý¾¹®É¡A ´N³o¨â­Ó Cookie ´N·|¥¢®Ä¤F¡C
  • document.cookie = "myname=Tom";

    ³]©w Cookie ¡A ³o­Ó Cookie ªº¦WºÙ©M­È¤À§O¬O myname ©M Tom¡A ³o¤@¥yªº§@¥Î´Nµ¥©ó¥H¤Uªº HTTP Response Header Äæ¦ì¡G

    Set-Cookie: myname=Tom
  • alert(document.cookie)

    Ū¨ú document.cookie ªº¤º®e¡A document.cookie ªº®æ¦¡´N©M HTTP Response Header ªº Cookie Äæ¤@¼Ë¡G

    myname=Tom; myage=16
  • Á`¤§¡A ¥Î JavaScript ¦s¨ú Cookie ®É©Ò¥Îªº Cookie ®æ¦¡¬O»P HTTP Request/Response Header ¤@¼Ëªº¡C
  • expires=date

§Ú­Ì³q±`¥Î¤é´Áª«¥óªº toGMTString() ¤èªk§â date Âন GMT¡A ÁÙ·|¥Î¨ä¥¦¤èªk¨Ó«ü©w Cookie ªº¦³®Ä¤é´Á¡C

¨Ò¤l¡G ³]©w¤@­Ó Cookie¡A ¥¦¦b¨â¤ÀÄÁ¤§«á´N¥¢®Ä js_tut_eg_cookie2.htm

<script>
function setck() {
var st = ""
var expires = new Date();
expires.setTime(expires.getTime() + 2 * 60 * 1000);
st = "myname=Tom; expires=" + expires.toGMTString()
document.cookie = st
alert(st + "\nThis cookie will be expired in 2 minutes.")
}

function cycle() {
window.status = document.cookie
setTimeout("cycle()", 1)
}

cycle()

</script>
<form>
<input type=button value="Set Cookie" onclick="setck()">
</form>

»¡©ú¡G

  • cycle()

    ³o­Ó¨ç¼Æ·|¤£Â_±N document.cookie ªº¤º®eÅã¥Ü¨ìª¬ºA¦C¡A ¥H«K°»´ú Cookie ªºª¬ªp

  • ·í«ö¤U "Set Cookie" ¤§«á¡A ´N·|³]©w¤@­Ó·|¦b¨â¤ÀÄÁ¤§«á´N¥¢®Äªº Cookie¡A §A¥i¥H¯d·Nª¬ºA¦C¡A ¦b¨â¤ÀÄÁ¤§«á¡A ¨º­Ó Cookie ´N·|®ø¥¢¡C
  • expires.getTime() + 2 * 60 * 1000

    expires.getTime() ·|¶Ç¦^¥Ñ 1970 ¦~ 1 ¤ë 1 ¤é¹s®É¹s¤À¨ì expires ³Q©w¸q®É©Ò¸g¾úªº®É¶¡¡A ³æ¦ì¬O·L¬í¡C

§A¤]¥i¥H«ü©w Cookie ¦b¬Y¤@­Ó¯S©w¤é´Á¥¢®Ä¡A ¨Ò¦p§A·Q¥¦¦b 2001 ¦~ 1 ¤ë 2 ¤é 3 ®É 4 ¤À¥¢®Ä¡A ¥i¥H±N¤§«e¨Ò¤l¤¤ªº expires ÅܼƥΥH¤U¤èªk¨Ó³]©w¥¦ªº­È¡G

var expires = new Date();
expires.setYear(2001);
expires.setMonth(0);
expires.setDate(1);
expires.setHours(2);
expires.setMinutes(3);
  • domain=domain

ÂsÄý¾¹­n¨D URL ®É¡A ·|Àˬd¦³¨S¦³ Cookie ²Å¦X¸Ó URL ªººô°ì¦WºÙ (domain)¡A ¦pªG¦³¬Y­Ó Cookie ²Å¦X¡A ´N·|Àˬd¥¦ªº¸ô®| path ¬O§_²Å¦X¸Ó URL¡A ¦pªG²Å¦Xªº¸Ü´N·|°e¨ì¦øªA¾¹¡C

¨Ò¤l¡G

domain ²Å¦Xªº URL ºô°ì ¤£²Å¦Xªº URL ºô°ì
xoom.com www.xoom.com
members.xoom.com
www.zoom.com
zoom.com
members.xoom.com members.xoom.com www.xoom.com
  • path=path

·í Cookie ªº domain ²Å¦X URL ªº domain ®É¡A ¤§«á´NÀˬd¬O§_²Å¦X URL ªº¸ô®|¡A ²Å¦Xªº¸Ü´N·|¶Ç°e¸Ó Cookie¡C

¨Ò¤l¡G

path ²Å¦Xªº URL ¸ô®| ¤£²Å¦Xªº URL ¸ô®|
/ ºô°ì¦WºÙ¤º©Ò¦³ªº¸ô®| ¡@
/foo /foobar
/foo/bar.html
¨S¦³¥]§t /foo ¦r¦êªº¸ô®|

¡@

§R°£ Cookie

·í§A·Q§R°£¬Y­Ó Cookie ®É¡A ¥u¶·¦b³]©w Cookie ®É«ü©w name¡A ¦Ó expires ´N«ü©w¬°¤@­Ó¤w¸g¹L¥hªº¤é´Á¡C ­n»s³y¤@­Ó¹L¥hªº¤é´Á¡A ¥u¶·±N getTime() ¶Ç¦^ªº¤é´Á´î¤@¡A ´N¥i¥H½T©w³o­Ó¤é´Á¤w¸g¹L¥h¡C

¨Ò¤l¡G §R°£ Cookie js_tut_eg_cookie3.htm

<script>
function setck() {
document.cookie = "myname=Tom"
alert(document.cookie)
}

function delck() {
var expires = new Date();
expires.setTime (expires.getTime() - 1);
document.cookie = "myname=; expires=" + expires.toGMTString()
alert(document.cookie)
}

function cycle() {
window.status = document.cookie
setTimeout("cycle()", 1)
}

cycle()

</script>
<form>
<input type=button value="Set Cookie" onclick="setck()">
<input type=button value="Delete Cookie" onclick="delck()">
</form>

¡@

¥Î JavaScript Ū¨ú Cookie

Cookie °£¤F¥i³Q¶Ç°e¨ì¦øªA¾¹¡A ÁÙ¥i¥H¥Î JavaScript ¨ÓŪ¨ú¬Y­Ó Cookie ªº­È¡C

¤èªk«Ü²³æ¡A  ¬Û«H¤j®a³£ª¾¹D Cookie ªº®æ¦¡¤F¡A ­º¥ý¨ú±o document.cookie ¦r¦ê¡A µM«á±q¦r¦ê¤¤§ä¥X§A·Q­nŪ¨úªº Cookie ¦WºÙ¡A ¦pªG§ä¨ìªº¸Ü¡A ´N¥i¥HŪ¨ú¥¦ªº­È¡C

¨Ò¤l¡G Àx¦s¡B Ū¨ú©M§R°£ Cookie test_lib_cookie.htm , lib_cookie.js

»¡©ú¡G

  • ¶}±Ò¨Ò¤l«á¡A §A¥i¥H¦bºô­¶¤¤ Set Cookie ½d³ò¿é¤J Cookie ªº¦WºÙ©M­È¡A µM«á«ö "Set Cookie" «ö¶s¡A ³o¼Ë´N³]©w¤F¤@­Ó Cookie¡A §A¤]¥i¥H³]©w¦h­Ó Cookie¡A ¦Óª¬ºA¦C·|§Y®É¤Ï¬M document.cookie ªº­È¡C

    ·QŪ¨ú¬Y­Ó Cookie ªº­È¡A ¥u¶·¿é¤J¸Ó Cookie ªº¦WºÙ¨ì Get Cookie ªº Name Äæ¦ì¡A µM«á«ö "Get Cookie Value" «ö¶s¡A ³o®É Value Äæ¦ì´N·|Åã¥Ü¸Ó Cookie ªº­È¤F¡C

    ·Q§R°£¬Y­Ó Cookie¡A ¤]¥u¶·¿é¤J¸Ó Cookie ªº¦WºÙ¨ì Delete Cookie ªº Name Äæ¦ì¡A µM«á«ö "Delete Cookie" «ö¶s¡A ¤§«á´N·|µoıª¬ºA¦C¥¢¥h¤F¸Ó Cookie ªººî¼v¡C

  • lib_cookie.js

    ¥¦¬O¤@­Ó JavaScript ÀɮסA ¤ºùئ³ 3 ­Ó¨ç¼Æ¡G

    lib_cookie.js ¤ºªº¨ç¼Æ »¡©ú
    set_cookie(name, value) ³]©w Cookie¡A ¥¦¬O¤@­Ó Robust ¨ç¼Æ¡A §A¥i¥H¥[¤J expires, path, domain, secure µ¥°Ñ¼Æ¡A ¥H¤U¤¶²Ðªº Cookie Maker ·|À°§A¦Û°Ê»s³y¹ïÀ³ªº°Ñ¼Æ
    get_cookie(name) ¶Ç¦^ Cookie ªº­È
    del_cookie(name) §R°£ Cookie

¡@

Cookie Maker

¬°¤F¤è«K¤j®a³]©w Cookie ¡A ¦³¨Ç±Ð¾Çºô¯¸¼g¤F­Ó Cookie Maker¡A §A¥u¶·¿é¤J Cookie ªº¦³Ãö¸ê®Æ¡A ´N·|¦Û°Ê»s³y¥H¤W¤T­Ó¨ç¼Æªº°Ñ¼Æ¡C ¥H¤U¨Ò¤l¬O±q CNET ±o¨Óªº¡A ¤£¹L¦Ñ®v­×§ï¤F¬Y¨Ç¦a¤è¡G

¤u¨ã¡G Cookie Maker   cookie_maker.htm

Cookie ªº¼Æ¥Ø­­¨î

NN 2.0 ªº Cookie ­­¨î¦p¤U¡G

  • ³Ì¦h¥u¥iÀx¦s 300 ­Ó Cookie
  • ¨C­Ó Cookie ¤£¥i¥H¤j¹L 4K ¦ì¤¸²Õ¡A ¸Ó Cookie ªº©Ò¦³Äݩʳ£­pºâ¦b¤º¡A ¦pªG¤Óªøªº¸Ü¡A ¸Ó Cookie ´N·|³Q°Åµu
  • ¨C­Óºô°ì (domain) ³Ì¦h¥u¥i¥HÀx¦s 20 ­Ó Cookie¡A ¦pªG¦h¥Xªº¸Ü¡A ³Ìªø®É¶¡¨S¦³³Q¦s¨úªº Cookie ´N·|³Q§R°£






[¨ì­¶³»] [­º­¶] [³t¬dªí]