JavaScript中Cookies的相關(guān)使用教程
Cookies是什么 ?
Web瀏覽器和服務(wù)器使用HTTP協(xié)議進(jìn)行通信,并且HTTP是一種無狀態(tài)協(xié)議。但對于一個商業(yè)網(wǎng)站它需要保持不同的頁面間的會話信息。例如在完成多頁后,一個用戶注冊結(jié)束。但是,如何保持所有網(wǎng)頁用戶的會話信息。
在許多情況下,使用Cookie來記憶和跟蹤的喜好,采購,傭金,并要求更好的訪問體驗(yàn)或網(wǎng)站的統(tǒng)計數(shù)據(jù)等信息的最有效的方法。
它是如何工作的 ?
服務(wù)器發(fā)送一些數(shù)據(jù)到訪問者的瀏覽器以cookie的形式。該瀏覽器可以接受cookie。如果是這樣,它是為訪問者存儲在硬盤驅(qū)動器上的一個純文本的記錄?,F(xiàn)在,當(dāng)訪問者到達(dá)您的網(wǎng)站其他頁面,瀏覽器發(fā)送相同cookie到服務(wù)器進(jìn)行檢索。一旦檢索到,服務(wù)器知道/記得剛才發(fā)生了什么存儲。
Cookies有5個可變長度字段的純文本數(shù)據(jù)記錄:
- Expires : cookie將過期的日期。如果這是空白的,那么就是當(dāng)訪問者退出瀏覽器cookie將到期。
- Domain : 網(wǎng)站的域名。
- Path : 路徑設(shè)置 cookie 目錄或網(wǎng)頁。如果想要從任何目錄或頁面,那么cookie 是空的。
- Secure : 如果該字段包含“安全”二字,那么cookie僅可檢索到一個安全的服務(wù)器。如果該字段為空,沒有限制存在。
- Name=Value : Cookie設(shè)置在鍵和值對的形式來獲取。
的Cookie最初設(shè)計用于CGI編程和cookies的數(shù)據(jù)是在Web瀏覽器和Web服務(wù)器之間自動傳輸?shù)?,所以在服?wù)器上的CGI腳本可以讀取和寫入存儲在客戶端上的cookie的值。
JavaScript的也可以操作使用文檔對象的cookie屬性。 JavaScript可以讀取,創(chuàng)建,修改和刪除適用于當(dāng)前網(wǎng)頁的cookie或Cookies。
儲存Cookies:
創(chuàng)建一個cookie的最簡單的方法是一個字符串值分配到document.cookie對象,它是這樣的:
語法
document.cookie = "key1=value1;key2=value2;expires=date";
在這里,expires屬性選項(xiàng)。如果提供這個屬性有一個有效的日期或時間,那么cookie將在給定的日期或時間滿期,而后cookies的值將無法訪問到。
注意:Cookie的值可能不包括分號,逗號或空白。出于這個原因,可能需要使用JavaScript 的 escape()函數(shù)將其存儲的值在cookie之前進(jìn)行編碼。如果這樣做,當(dāng)讀取cookie的值時也必須使用相應(yīng)的unescape()函數(shù)。
讀取Cookies:
讀取cookie和寫入一樣簡單,因?yàn)?document.cookieobject 的值是cookie。所以每當(dāng)要訪問cookie,可以使用這個字符串。
該字符串 document.cookie將繼續(xù)由分號,其中name是一個cookie的名稱,值是它的字符串值分隔的名稱=值對的列表。
設(shè)置Cookies的過期日期:
可以通過設(shè)置的到期日期和保存cookie中的失效日期延長超出當(dāng)前瀏覽器會話cookie中的壽命。這可以通過設(shè)置expires屬性的日期和時間來完成。
例子:
下面的例子演示了如何設(shè)置cookie1個月后過期:
<html> <head> <script type="text/javascript"> <!-- function WriteCookie() { var now = new Date(); now.setMonth( now.getMonth() + 1 ); cookievalue = escape(document.myform.customer.value) + ";" document.cookie="name=" + cookievalue; document.cookie = "expires=" + now.toUTCString() + ";" alert("Setting Cookies : " + "name=" + cookievalue ); } //--> </script> </head> <body> <form name="formname" action=""> Enter name: <input type="text" name="customer"/> <input type="button" value="Set Cookie" onclick="WriteCookie()"/> </form> </body> </html>
刪除Cookie:
有時如果想刪除一個cookie,以便后續(xù)嘗試讀取cookie返回什么。要做到這一點(diǎn),你只需要在到期日設(shè)置在過去的某個時間。
例子:
下面的例子演示了如何通過設(shè)置有效期限一個月以前刪除cookie:
<html> <head> <script type="text/javascript"> <!-- function WriteCookie() { var now = new Date(); now.setMonth( now.getMonth() - 1 ); cookievalue = escape(document.myform.customer.value) + ";" document.cookie="name=" + cookievalue; document.cookie = "expires=" + now.toUTCString() + ";" alert("Setting Cookies : " + "name=" + cookievalue ); } //--> </script> </head> <body> <form name="formname" action=""> Enter name: <input type="text" name="customer"/> <input type="button" value="Set Cookie" onclick="WriteCookie()"/> </form> </body> </html>
注:不設(shè)置日期,可以使用setTime()函數(shù)看到新值。
相關(guān)文章
JavaScript基礎(chǔ)語法讓人疑惑的地方小結(jié)
JavaScript基礎(chǔ)語法讓人疑惑的地方小結(jié),學(xué)習(xí)js的朋友可以了解下2012-05-05JavaScript中的prototype.bind()方法介紹
在JavaScript中,我們經(jīng)常用到函數(shù)綁定,而當(dāng)你需要在另一個函數(shù)中保持this上下文時,使用Function.prototype.bind()會很方便2014-04-04JavaScript parseInt()與Number()區(qū)別案例詳解
這篇文章主要介紹了JavaScript parseInt()與Number()區(qū)別案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09JavaScript中的Repaint和Reflow用法詳解
這篇文章主要介紹了JavaScript中的Repaint和Reflow用法詳解,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-07-07在JavaScript應(yīng)用中實(shí)現(xiàn)延遲加載的方法
這篇文章主要介紹了在JavaScript應(yīng)用中實(shí)現(xiàn)延遲加載的方法,利用RequireJS框架,需要的朋友可以參考下2015-06-06JavaScript基礎(chǔ)心法 數(shù)據(jù)類型
一個很基礎(chǔ)的知識點(diǎn),這篇主要是介紹JavaScript中基本數(shù)據(jù)類型和引用數(shù)據(jù)類型是如何存儲的,需要的朋友可以參考下2018-03-03