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