cookie在javascript中的使用技巧以及隱私在服務器端的設置
讀取cookie字符串方法:
alert(document.cookie);
一個網(wǎng)站的cookie字符串包含了該站點域名下的所有cookie(javascript 可訪問的,不包括 httponly 的cookie ),多個cookie之間用分號和一個空格隔開,最多一般是 20個或50個,例如,包含2個cookie的字符串格式為
document.cookie = "key1=value1; key2=value2"
一個cookie字符串最長為4k,超出個數(shù)限制或長度限制時將返回空值, cookie 個數(shù)超出限制時,會造成另外一些 cookie 丟失,按規(guī)范,丟失的應該是 最近、最少使用的,但是瀏覽器的實現(xiàn)并不完全遵循這個規(guī)范。
設置一個cookie的方法:
document.cookie="key=value;expires=date;path=/;domain=xxx.com;secure";
要設置多個cookie 只要反復使用 document.cookie = XXX 即可,會自動和其他cookie拼接成一個cookie字符串。
如果要讀取某個cookie的值,只能通過解析cookie字符串來得到。
下面是設置cookie時的幾個參數(shù)
1、名和值:key 為 cookie名稱,value為cookie值
2、過期時間:expires用于設置過期時間,為格林威治字符串格式,如
expires = new Date('2011-12-30').toUTCString(); //"Fri, 30 Dec 2011 00:00:00 GMT"
如果沒有設置過期時間,cookie將在瀏覽器關閉時失效。
3、所屬路勁:網(wǎng)站某張網(wǎng)頁中的腳本所設置的cookie默認情況下只能供該網(wǎng)頁所在文件夾及其子文件夾中的網(wǎng)頁訪問,如 http://chabaoo.cn/aa/1.html 所設置的cookie 不能被 http://chabaoo.cn/bb/2.html 訪問,更多的時候都希望一個cookie能被本站所有網(wǎng)頁訪問,這就需要設置path屬性, path=/ 表示該cookie的所屬路勁是網(wǎng)站根目錄,這樣本站所有網(wǎng)頁都能訪問。
4、所屬域名:cookie無法跨域訪問,一般情況下,cookie僅供本站使用,如果想在多個網(wǎng)站下共享,那么共享cookie的網(wǎng)站必須擁有同一個主域名,通過設置 domain屬性來實現(xiàn)。比如,如果想讓 chabaoo.cn 和 bbs.jb51.net這兩個二級域名下的網(wǎng)站共享cookie,在設置cookie時需要設置domain=jb51.net
5、加密傳輸:如果一個cookie帶有secure屬性,那么cookie在傳輸?shù)椒掌鞯倪^程中將使用加密數(shù)據(jù)的方式傳輸。
cookie字符串編碼:
cookie字符串中不能包含空格,分號,逗號等特殊符號,如果可能包含這些符號,可以使用encodeURIComponent()函數(shù)將 cookie 的值進行編碼,讀取 cookie 的值時再使用decodeURIComponent()函數(shù)把值進行轉(zhuǎn)換回來,如 document.cookie="key="+encodeURIComponent(value);
在服務器設置 cookie 并聲明其私密性(secure 及 httponly):
有時候為安全,你可能需要限制一些 cookie 的訪問
secure : 該 cookie 僅供 https 安全連接使用
httponly : cookie 僅供 http 傳輸過程中使用,javascript 不能訪問該 cookie
例如,在PHP 中使用內(nèi)置函數(shù)setcookie() 設置一個具有私密性限制的 cookie
setcookie("UserIDCookie","123456",time()+60*30,'/','mytest.com',false,true);
其中第六個參數(shù) 表示是否僅供 https 連接使用,第 七個參數(shù) true 表示是否為 httponly
跨域請求及第三方 cookie ,以及 P3P(個人隱私保護策略):
瀏覽器的隱私設置(或者內(nèi)容設置,chrome 在高級設置--內(nèi)容設置 選項)中,設置禁止使用第三方 cookie 時,跨域請求(包括 iframe ,img ,javascript 文件等請求)無法發(fā)送屬于該域的 cookie .
例如, 通過 iframe 引用一個跨域的 頁面 http://chabaoo.cn/index.html ,即使瀏覽器中保存了屬于 other.com 域名下的某個名為 otherLoginFrag 的cookie ,在 iframe 中請求 該頁面時, otherLoginFrag 并不會隨請求一起發(fā)往 www.other.com 的服務器。
第三方 cookie 限制在不同的瀏覽器中可能略有不同,比如, safari 在禁用 第三方 cookie 時,from 表單的提交也只有 post 方式才能提交 cookie .
如果在希望在瀏覽器禁用 第三方cookie 時仍能發(fā)送跨域請求的 cookie ,就需要在跨域的服務器中使用 P3P 響應頭預先聲明允許發(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實現(xiàn)unicode和UTF-8之間的互相轉(zhuǎn)換互轉(zhuǎn)
需要將PC送過來的UTF-8轉(zhuǎn)換成UNICODE才能將內(nèi)容通過短信發(fā)送出去,同樣,接收到的短信為unicode編碼,也許轉(zhuǎn)換成UTF-8才能在PC端軟件顯示出來2017-07-07Bootstrap頁面標題Page Header的實現(xiàn)方法
這篇文章主要為大家詳細介紹了Bootstrap頁面標題Page Header的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03javascript圓盤抽獎程序?qū)崿F(xiàn)原理和完整代碼例子
這篇文章主要介紹了javascript圓盤抽獎程序?qū)崿F(xiàn)原理和完整代碼例子,需要的朋友可以參考下2014-06-06Iphone手機、安卓手機瀏覽器控制默認縮放大小的方法總結(jié)(附代碼)
這篇文章主要介紹了Iphone手機、安卓手機瀏覽器控制默認縮放大小的方法,通過meta標簽中添加屬性代碼展示控制瀏覽器的默認縮放,具體操作步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。2017-08-08