非常不錯的[JS]Cookie精通之路第2/2頁
更新時間:2008年06月26日 08:55:56 作者:
Cookies,有些人喜歡它們,有些人憎恨它們。但是,很少有人真正知道如何使用它們?,F(xiàn)在你可以成為少數(shù)人中的成員-可以自傲的
Cookie 大師。
// Date() 的構(gòu)造器設(shè)置以毫秒為單位
// .getTime() 方法返回時間,單位為毫秒
// 所以要設(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值有點象個小把戲,因為你一次就得到了屬于當前文檔的所有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ā)送給服務(wù)器端CGI腳本進行處理?,F(xiàn)在你知道了使用Javascript腳本操縱
cookies的基本方法。但是,如果你跟我一樣,那么我們要做的第一件事,就是建立一些接口函數(shù),把cookies處理上的麻煩隱藏起來。不過,
在你開始編程之前,稍候片刻。這些工作,早就有人替你做好了。你要做的,只是到哪去找這些接口函數(shù)而已。
比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.這本書里,可以找到很好的cookie應(yīng)用類。你也可以在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服務(wù)器上的cookies,不超過20個,每個cookie的數(shù)據(jù)(包括名稱和值),不超過4K字節(jié)。(
不過,本文里的cookie尺寸沒問題,它只占了12 K字節(jié),保存在3個3 cookies里。)
簡而言之,注意保持cookie簡單。不要依賴cookies的存在,不要在每個cookie里保存太多信息。不要保存太多的cookes。但是,拋除這些限制
,在技巧高超的WEB管理員手里,cookie的概念是一個有用的工具。
外部鏈接
每個 Javascript 程序員都應(yīng)當有一份Javascript: David Flanagan 的The Definitive Guide。 這本書里找到cookie 類例程可以幫助你把
不止一個變量編碼到單一的cookie,克服掉“每個WEB服務(wù)器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設(shè)置cookie)
- JS保存和刪除cookie操作 判斷cookie是否存在
- js設(shè)置cookie過期及清除瀏覽器對應(yīng)名稱的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)文章
Angular組件拿不到@Input輸入屬性問題探究解決方法
最近在工作中實現(xiàn)一個feature的時候,碰到一個小問題:Angular組件拿不到@Input輸入屬性的問題,盡管對這些問題都比較了解,但是找問題是需要一個過程的,所以還是把這個問題總結(jié)記錄了下2023-01-01
JavaScript樹形數(shù)據(jù)結(jié)構(gòu)處理
這篇文章主要介紹了JavaScript樹形數(shù)據(jù)結(jié)構(gòu)處理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07
前端報錯Failed?to?resolve?component:?smile-outlined?If?thi
這篇文章主要為大家介紹了前端報錯?Failed?to?resolve?component:?smile-outlined?If?this?is?a?native?custom?的問題分析解決,有需要的朋友可以借鑒參考下2023-06-06
如何解決js函數(shù)防抖、節(jié)流出現(xiàn)的問題
這篇文章主要介紹了如何解決js函數(shù)防抖、節(jié)流出現(xiàn)的問題。SyntheticEvent對象是通過合并得到的。 這意味著在事件回調(diào)被調(diào)用后,SyntheticEvent 對象將被重用并且所有屬性都將被取消。 因此,您無法以異步方式訪問該事件。,需要的朋友可以參考下2019-06-06

