cookie在javascript中的使用技巧以及隱私在服務(wù)器端的設(shè)置
讀取cookie字符串方法:
alert(document.cookie);
一個(gè)網(wǎng)站的cookie字符串包含了該站點(diǎn)域名下的所有cookie(javascript 可訪問(wèn)的,不包括 httponly 的cookie ),多個(gè)cookie之間用分號(hào)和一個(gè)空格隔開,最多一般是 20個(gè)或50個(gè),例如,包含2個(gè)cookie的字符串格式為
document.cookie = "key1=value1; key2=value2"
一個(gè)cookie字符串最長(zhǎng)為4k,超出個(gè)數(shù)限制或長(zhǎng)度限制時(shí)將返回空值, cookie 個(gè)數(shù)超出限制時(shí),會(huì)造成另外一些 cookie 丟失,按規(guī)范,丟失的應(yīng)該是 最近、最少使用的,但是瀏覽器的實(shí)現(xiàn)并不完全遵循這個(gè)規(guī)范。
設(shè)置一個(gè)cookie的方法:
document.cookie="key=value;expires=date;path=/;domain=xxx.com;secure";
要設(shè)置多個(gè)cookie 只要反復(fù)使用 document.cookie = XXX 即可,會(huì)自動(dòng)和其他cookie拼接成一個(gè)cookie字符串。
如果要讀取某個(gè)cookie的值,只能通過(guò)解析cookie字符串來(lái)得到。
下面是設(shè)置cookie時(shí)的幾個(gè)參數(shù)
1、名和值:key 為 cookie名稱,value為cookie值
2、過(guò)期時(shí)間:expires用于設(shè)置過(guò)期時(shí)間,為格林威治字符串格式,如
expires = new Date('2011-12-30').toUTCString(); //"Fri, 30 Dec 2011 00:00:00 GMT"
如果沒(méi)有設(shè)置過(guò)期時(shí)間,cookie將在瀏覽器關(guān)閉時(shí)失效。
3、所屬路勁:網(wǎng)站某張網(wǎng)頁(yè)中的腳本所設(shè)置的cookie默認(rèn)情況下只能供該網(wǎng)頁(yè)所在文件夾及其子文件夾中的網(wǎng)頁(yè)訪問(wèn),如 http://www.dbjr.com.cn/aa/1.html 所設(shè)置的cookie 不能被 http://www.dbjr.com.cn/bb/2.html 訪問(wèn),更多的時(shí)候都希望一個(gè)cookie能被本站所有網(wǎng)頁(yè)訪問(wèn),這就需要設(shè)置path屬性, path=/ 表示該cookie的所屬路勁是網(wǎng)站根目錄,這樣本站所有網(wǎng)頁(yè)都能訪問(wèn)。
4、所屬域名:cookie無(wú)法跨域訪問(wèn),一般情況下,cookie僅供本站使用,如果想在多個(gè)網(wǎng)站下共享,那么共享cookie的網(wǎng)站必須擁有同一個(gè)主域名,通過(guò)設(shè)置 domain屬性來(lái)實(shí)現(xiàn)。比如,如果想讓 www.dbjr.com.cn 和 bbs.jb51.net這兩個(gè)二級(jí)域名下的網(wǎng)站共享cookie,在設(shè)置cookie時(shí)需要設(shè)置domain=jb51.net
5、加密傳輸:如果一個(gè)cookie帶有secure屬性,那么cookie在傳輸?shù)椒?wù)器的過(guò)程中將使用加密數(shù)據(jù)的方式傳輸。
cookie字符串編碼:
cookie字符串中不能包含空格,分號(hào),逗號(hào)等特殊符號(hào),如果可能包含這些符號(hào),可以使用encodeURIComponent()函數(shù)將 cookie 的值進(jìn)行編碼,讀取 cookie 的值時(shí)再使用decodeURIComponent()函數(shù)把值進(jìn)行轉(zhuǎn)換回來(lái),如 document.cookie="key="+encodeURIComponent(value);
在服務(wù)器設(shè)置 cookie 并聲明其私密性(secure 及 httponly):
有時(shí)候?yàn)榘踩?,你可能需要限制一?nbsp;cookie 的訪問(wèn)
secure : 該 cookie 僅供 https 安全連接使用
httponly : cookie 僅供 http 傳輸過(guò)程中使用,javascript 不能訪問(wèn)該 cookie
例如,在PHP 中使用內(nèi)置函數(shù)setcookie() 設(shè)置一個(gè)具有私密性限制的 cookie
setcookie("UserIDCookie","123456",time()+60*30,'/','mytest.com',false,true);
其中第六個(gè)參數(shù) 表示是否僅供 https 連接使用,第 七個(gè)參數(shù) true 表示是否為 httponly
跨域請(qǐng)求及第三方 cookie ,以及 P3P(個(gè)人隱私保護(hù)策略):
瀏覽器的隱私設(shè)置(或者內(nèi)容設(shè)置,chrome 在高級(jí)設(shè)置--內(nèi)容設(shè)置 選項(xiàng))中,設(shè)置禁止使用第三方 cookie 時(shí),跨域請(qǐng)求(包括 iframe ,img ,javascript 文件等請(qǐng)求)無(wú)法發(fā)送屬于該域的 cookie .
例如, 通過(guò) iframe 引用一個(gè)跨域的 頁(yè)面 http://www.dbjr.com.cn/index.html ,即使瀏覽器中保存了屬于 other.com 域名下的某個(gè)名為 otherLoginFrag 的cookie ,在 iframe 中請(qǐng)求 該頁(yè)面時(shí), otherLoginFrag 并不會(huì)隨請(qǐng)求一起發(fā)往 www.other.com 的服務(wù)器。
第三方 cookie 限制在不同的瀏覽器中可能略有不同,比如, safari 在禁用 第三方 cookie 時(shí),from 表單的提交也只有 post 方式才能提交 cookie .
如果在希望在瀏覽器禁用 第三方cookie 時(shí)仍能發(fā)送跨域請(qǐng)求的 cookie ,就需要在跨域的服務(wù)器中使用 P3P 響應(yīng)頭預(yù)先聲明允許發(fā)送的 cookie.
//php header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); setcookie("UserIDCookie","123456");
- 最佳JS代碼編寫的14條技巧
- js中字符替換函數(shù)String.replace()使用技巧
- JS代碼優(yōu)化技巧之通俗版(減少js體積)
- Javascript的數(shù)組與字典用法與遍歷對(duì)象的屬性技巧
- JavaScript判斷DOM何時(shí)加載完畢的技巧
- ko knockoutjs動(dòng)態(tài)屬性綁定技巧應(yīng)用
- javascript 圖片裁剪技巧解讀
- javascript 二進(jìn)制運(yùn)算技巧解析
- PHP小技巧之JS和CSS優(yōu)化工具M(jìn)inify的使用方法
- nodejs的10個(gè)性能優(yōu)化技巧
- 在JS數(shù)組特定索引處指定位置插入元素的技巧
- JavaScript小技巧整理篇(非常全)
相關(guān)文章
JS實(shí)現(xiàn)unicode和UTF-8之間的互相轉(zhuǎn)換互轉(zhuǎn)
需要將PC送過(guò)來(lái)的UTF-8轉(zhuǎn)換成UNICODE才能將內(nèi)容通過(guò)短信發(fā)送出去,同樣,接收到的短信為unicode編碼,也許轉(zhuǎn)換成UTF-8才能在PC端軟件顯示出來(lái)2017-07-07Bootstrap頁(yè)面標(biāo)題Page Header的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Bootstrap頁(yè)面標(biāo)題Page Header的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03javascript圓盤抽獎(jiǎng)程序?qū)崿F(xiàn)原理和完整代碼例子
這篇文章主要介紹了javascript圓盤抽獎(jiǎng)程序?qū)崿F(xiàn)原理和完整代碼例子,需要的朋友可以參考下2014-06-06Iphone手機(jī)、安卓手機(jī)瀏覽器控制默認(rèn)縮放大小的方法總結(jié)(附代碼)
這篇文章主要介紹了Iphone手機(jī)、安卓手機(jī)瀏覽器控制默認(rèn)縮放大小的方法,通過(guò)meta標(biāo)簽中添加屬性代碼展示控制瀏覽器的默認(rèn)縮放,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08