在Javascript腳本裏,一(yī)個cookie 實際就是一(yī)個字符串屬性。當你讀取cookie的值時,就得到一(yī)個字符串,裏面當前WEB頁使用的所有cookies的名稱和值。每個cookie除了 name名稱和value值這兩個屬性以外(wài),還有四個屬性。這些屬性是: expires過期時間、 path路徑、 domain域、以及 secure安全。
Expires – 過期時間。指定cookie的生(shēng)命期。具體(tǐ)是值是過期日期。如果想讓cookie的存在期限超過當前浏覽器會話(huà)時間,就必須使用這個屬性。當過了到期日期時,浏覽器就可以删除cookie文件,沒有任何影響。
Path – 路徑。指定與cookie關聯的WEB頁。值可以是一(yī)個目錄,或者是一(yī)個路徑。如果http://www.***.com/a/index.html 建立了一(yī)個cookie,那麽在http://www.***.com/a/目錄裏的所有頁面,以及該目錄下(xià)面任何子目錄裏的頁面都可以 訪問這個cookie。這就是說,在http://www.***.com/a/1/2 裏的任何頁面都可以訪問http://www.***.com/a/index.html建立的cookie。但是,如果http: //www.***.com/b/ 需要訪問http://www.***.com/a/index.html設置的cookes,該怎麽辦?這時,我(wǒ)(wǒ)們要把cookies 的path屬性設置成“/”。
在指定路徑的時候,凡是來自同一(yī)服務器,URL裏有相同路徑的所有WEB頁面都可以共享cookies。現在看另一(yī)個例子: 如果想讓 http://www.***.com/a/1/ 和http://www.***.com/a/2/共享cookies,就要把path設成“/a”。
Domain – 域。指定關聯的WEB服務器或域。值是域名,比如***.com。這是對path路徑屬性的一(yī)個延伸。如果我(wǒ)(wǒ)們想讓 a.***.com 能夠訪問b.***.com設置的cookies,該怎麽辦? 我(wǒ)(wǒ)們可以把domain屬性設置成“***.com”,并把path屬性設置成“/”。不能把cookies域屬性設置成與設置它的服務器的 所在域不同的值。
Secure – 安全。指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。這個屬性的值或者是“secure”,或者爲空。缺省情況下(xià),該屬性爲空,也就是 使用不安全的HTTP連接傳遞數據。如果一(yī)個 cookie 标記爲secure,那麽,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本 地保存的cookie。換句話(huà)說,把cookie設置爲secure,隻保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的 cookie文件并不加密。如果想讓本地cookie也加密,得自己加密數據。
<script type="text/javascript">
//相關調用函數
//設置Cookie,調用方法如:setCookie("myCookie","yes");
function setCookie(c_name,value,expiredays,path,domain) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays); //如果有效時間爲空,則默認有效時間至關閉浏覽器
if ( path==null || path=="" ) path="/"; //設置默認爲根目錄
if ( domain==null || domain=="" ) domain=""; //設置默認域名,如:***.com
document.cookie=c_name+ "=" +escape(value)+";"+((expiredays==null || expiredays=="") ? "" : "expires="+exdate.toGMTString()+";")+((path==null || path=="")?"":"path="+path+";")+((domain==null || domain=="")?"":"domain="+domain+";");
}
//獲取Cookie,調用方法如:getCookie("myCookie");
function getCookie(c_name) {
if (document.cookie.length>0) {
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1) {
c_start=c_start + c_name.length+1 ;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
</script>
Expires – 過期時間。指定cookie的生(shēng)命期。具體(tǐ)是值是過期日期。如果想讓cookie的存在期限超過當前浏覽器會話(huà)時間,就必須使用這個屬性。當過了到期日期時,浏覽器就可以删除cookie文件,沒有任何影響。
Path – 路徑。指定與cookie關聯的WEB頁。值可以是一(yī)個目錄,或者是一(yī)個路徑。如果http://www.***.com/a/index.html 建立了一(yī)個cookie,那麽在http://www.***.com/a/目錄裏的所有頁面,以及該目錄下(xià)面任何子目錄裏的頁面都可以 訪問這個cookie。這就是說,在http://www.***.com/a/1/2 裏的任何頁面都可以訪問http://www.***.com/a/index.html建立的cookie。但是,如果http: //www.***.com/b/ 需要訪問http://www.***.com/a/index.html設置的cookes,該怎麽辦?這時,我(wǒ)(wǒ)們要把cookies 的path屬性設置成“/”。
在指定路徑的時候,凡是來自同一(yī)服務器,URL裏有相同路徑的所有WEB頁面都可以共享cookies。現在看另一(yī)個例子: 如果想讓 http://www.***.com/a/1/ 和http://www.***.com/a/2/共享cookies,就要把path設成“/a”。
Domain – 域。指定關聯的WEB服務器或域。值是域名,比如***.com。這是對path路徑屬性的一(yī)個延伸。如果我(wǒ)(wǒ)們想讓 a.***.com 能夠訪問b.***.com設置的cookies,該怎麽辦? 我(wǒ)(wǒ)們可以把domain屬性設置成“***.com”,并把path屬性設置成“/”。不能把cookies域屬性設置成與設置它的服務器的 所在域不同的值。
Secure – 安全。指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。這個屬性的值或者是“secure”,或者爲空。缺省情況下(xià),該屬性爲空,也就是 使用不安全的HTTP連接傳遞數據。如果一(yī)個 cookie 标記爲secure,那麽,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本 地保存的cookie。換句話(huà)說,把cookie設置爲secure,隻保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的 cookie文件并不加密。如果想讓本地cookie也加密,得自己加密數據。
<script type="text/javascript">
//相關調用函數
//設置Cookie,調用方法如:setCookie("myCookie","yes");
function setCookie(c_name,value,expiredays,path,domain) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays); //如果有效時間爲空,則默認有效時間至關閉浏覽器
if ( path==null || path=="" ) path="/"; //設置默認爲根目錄
if ( domain==null || domain=="" ) domain=""; //設置默認域名,如:***.com
document.cookie=c_name+ "=" +escape(value)+";"+((expiredays==null || expiredays=="") ? "" : "expires="+exdate.toGMTString()+";")+((path==null || path=="")?"":"path="+path+";")+((domain==null || domain=="")?"":"domain="+domain+";");
}
//獲取Cookie,調用方法如:getCookie("myCookie");
function getCookie(c_name) {
if (document.cookie.length>0) {
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1) {
c_start=c_start + c_name.length+1 ;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
</script>