非常不錯(cuò)的[JS]Cookie精通之路
更新時(shí)間:2008年06月26日 08:55:56 作者:
Cookies,有些人喜歡它們,有些人憎恨它們。但是,很少有人真正知道如何使用它們?,F(xiàn)在你可以成為少數(shù)人中的成員-可以自傲的
Cookie 大師。
// Date() 的構(gòu)造器設(shè)置以毫秒為單位
// .getTime() 方法返回時(shí)間,單位為毫秒
// 所以要設(shè)置15分鐘到期,要用60000毫秒乘15分鐘
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure";
讀取cookies值有點(diǎn)象個(gè)小把戲,因?yàn)槟阋淮尉偷玫搅藢儆诋?dāng)前文檔的所有cookies。
// 下面這個(gè)語句讀取了屬于當(dāng)前文檔的所有cookies
var allcookies = document.cookie;
現(xiàn)在,我們得解析allcookies變量里的不同cookies,找到感興趣的指定cookie。這個(gè)工作很簡單,因?yàn)槲覀兛梢岳肑avascript語言提供的擴(kuò)
展字符串支持。
如果我們對(duì)前面分配的cookie "username" 感興趣,可以用下面的腳本來讀取它的值。
// 我們定義一個(gè)函數(shù),用來讀取特定的cookie值。
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);
// 如果找到了索引,就代表cookie存在,
// 反之,就說明不存在。
if (cookie_pos != -1)
{
// 把cookie_pos放在值的開始,只要給值加1即可。
cookie_pos += cookie_name.length + 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1)
{
cookie_end = allcookies.length;
}
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
}
// 調(diào)用函數(shù)
var cookie_val = getCookie("username");
上面例程里的 cookie_val 變量可以用來生成動(dòng)態(tài)內(nèi)容,或者發(fā)送給服務(wù)器端CGI腳本進(jìn)行處理?,F(xiàn)在你知道了使用Javascript腳本操縱
cookies的基本方法。但是,如果你跟我一樣,那么我們要做的第一件事,就是建立一些接口函數(shù),把cookies處理上的麻煩隱藏起來。不過,
在你開始編程之前,稍候片刻。這些工作,早就有人替你做好了。你要做的,只是到哪去找這些接口函數(shù)而已。
比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.這本書里,可以找到很好的cookie應(yīng)用類。你也可以在Oreilly的WEB站
點(diǎn)上找到這本書里的例子。本文最后的鏈接列表里,有一些訪問這些cookie示例的直接鏈接。
Cookies 怪獸
因?yàn)槟承┰駽ookies 的名聲很不好。許多人利用cookies做一些卑鄙的事情,比如流量分析、點(diǎn)擊跟蹤。Cookies 也不是非常安全,特別是沒
有secure屬性的cookies。不過,即使你用了安全的cookies,如果你和別人共用計(jì)算機(jī),比如在網(wǎng)吧,那么別人就可以窺探計(jì)算機(jī)硬盤上未加
密保存的cookie文件,也就有可能竊取你的敏感信息。所以,如果你是一個(gè)WEB開發(fā)人員,那么你要認(rèn)真考慮這些問題。不要濫用cookies。不
要把用戶可能認(rèn)為是敏感的數(shù)據(jù)保存在cookies里。如果把用戶的社會(huì)保險(xiǎn)號(hào)、信用卡號(hào)等保存在cookie里,等于把這些敏感信息放在窗戶紙下
,無異于把用戶投到極大危險(xiǎn)之中。一個(gè)好的原則是,如果你不想陌生人了解你的這些信息,那就不要把它們保存在cookies里。
另外,cookies還有一些實(shí)際的限制。Cookies保留在計(jì)算機(jī)上,不跟著用戶走。如果用戶想換計(jì)算機(jī),那么新計(jì)算機(jī)無法得到原來的cookie。
甚至用戶在同一臺(tái)計(jì)算機(jī)上使用不同瀏覽器,也得不到原來的cookie:Netscape 不能讀取Internet Explorer 的cookies。
還有,用戶也不愿意接受cookies。所以不要以為所有的瀏覽器都能接受你發(fā)出的cookies。如果瀏覽器不接受cookies,你要保證自己的WEB站
點(diǎn)不致因此而崩潰或中斷。
另外WEB 瀏覽器能保留的cookies不一定能超過300個(gè)。也沒有標(biāo)準(zhǔn)規(guī)定瀏覽器什么時(shí)候、怎么樣作廢cookies。所以達(dá)到限制時(shí),瀏覽器能夠有
效地隨機(jī)刪除cookies。瀏覽器保留的來自一個(gè)WEB服務(wù)器上的cookies,不超過20個(gè),每個(gè)cookie的數(shù)據(jù)(包括名稱和值),不超過4K字節(jié)。(
不過,本文里的cookie尺寸沒問題,它只占了12 K字節(jié),保存在3個(gè)3 cookies里。)
簡而言之,注意保持cookie簡單。不要依賴cookies的存在,不要在每個(gè)cookie里保存太多信息。不要保存太多的cookes。但是,拋除這些限制
,在技巧高超的WEB管理員手里,cookie的概念是一個(gè)有用的工具。
外部鏈接
每個(gè) Javascript 程序員都應(yīng)當(dāng)有一份Javascript: David Flanagan 的The Definitive Guide。 這本書里找到cookie 類例程可以幫助你把
不止一個(gè)變量編碼到單一的cookie,克服掉“每個(gè)WEB服務(wù)器20 個(gè)cookies的限制”。請(qǐng)點(diǎn)擊這個(gè)鏈接下載該例程,
ftp://ftp.oreilly.com/pub/examples/nutshell/javascript/。
您可能感興趣的文章:
- 什么是cookie?js手動(dòng)創(chuàng)建和存儲(chǔ)cookie
- js中的cookie的讀寫操作示例詳解
- jsp使用cookie存儲(chǔ)中文示例分享
- js文件Cookie存取值示例代碼
- js獲取指定的cookie的具體實(shí)現(xiàn)
- 用js正確判斷用戶名cookie是否存在的方法
- httpclient模擬登陸具體實(shí)現(xiàn)(使用js設(shè)置cookie)
- JS保存和刪除cookie操作 判斷cookie是否存在
- js設(shè)置cookie過期及清除瀏覽器對(duì)應(yīng)名稱的cookie
- js中cookie的添加、取值、刪除示例代碼
- js讀寫(刪除)Cookie實(shí)例詳解
- JS操作Cookies包括(讀取添加與刪除)
- JS讀取cookies信息(記錄用戶名)
- jquery.cookie.js 操作cookie實(shí)現(xiàn)記住密碼功能的實(shí)現(xiàn)代碼
- js讀寫COOKIE實(shí)現(xiàn)記住帳號(hào)或密碼的代碼(js讀寫COOKIE)
- asp.net通過js實(shí)現(xiàn)Cookie創(chuàng)建以及清除Cookie數(shù)組的代碼
- js cookies實(shí)現(xiàn)簡單統(tǒng)計(jì)訪問次數(shù)
- 靜態(tài)頁面利用JS讀取cookies記住用戶信息
- js中cookie的使用詳細(xì)分析
- javascript js cookie的存儲(chǔ),獲取和刪除
- 用js讀、寫、刪除Cookie代碼分享及詳細(xì)注釋說明
相關(guān)文章
JavaScript中判斷函數(shù)是new還是()調(diào)用的區(qū)別說明
具名函數(shù)的各種調(diào)用方式 在之前篇幅中已經(jīng)介紹過了。這篇看看如何判斷一個(gè)函數(shù)是被new調(diào)用的,還是被其它方式調(diào)用的。2011-04-04JavaScript判斷瀏覽器運(yùn)行環(huán)境的詳細(xì)方法
這篇文章主要給大家介紹了關(guān)于JavaScript判斷瀏覽器運(yùn)行環(huán)境的詳細(xì)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06javascript encodeURI和encodeURIComponent的比較
在進(jìn)行SaaS前端開發(fā)的時(shí)候,大家經(jīng)常會(huì)用到兩個(gè)JavaScriptNative函數(shù):encodeURI 和 encodeURIComponent。這篇文章詳細(xì)解釋這兩個(gè)函數(shù)的用途并比較它們的不同之處2010-04-04微信小程序?qū)崿F(xiàn)頁面分享onShareAppMessage
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)頁面分享onShareAppMessage,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08微信小程序?qū)崿F(xiàn)翻牌抽獎(jiǎng)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)翻牌抽獎(jiǎng)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09