cookie

来源:互联网 发布:淘宝售前客服流程视频 编辑:程序博客网 时间:2024/06/05 08:30

什么是cookie

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。

    页面用来保存信息

    比如:自动登录、记住用户

    是以域名为单位的,baidu.com/a.html和baidu.com/b.html是一个

特性

    同一个网站中所有页面共享一套cookie

    数量、大小有限

    过期时间

两种:持久性cookie:会被存储到客户端的硬盘上

会话cookie:不会被存储到客户端的硬盘上,而是放在浏览器进程所处的内存当中,当浏览器关闭则该回话cookie就销毁了

cookie的组成

    cookie 由名/值对形式的文本组成:name=value。完整格式为:

name=value;[expires=date]; [path=path]; [domain=somewhere.com]; [secure]

中括号是可选,name=value 是必选。

    expires=date 失效时间,如果没有声明,则为浏览器关闭后即失效。声明了失效时间,那么时间到期后方能失效。

    domain=domain 访问域名,用于限制只有设置的域名才可以访问,那么没有设置,会

默认限制为创建 cookie 的域名

    secure 安全设置,指明必须通过安全的通信通道来传输(HTTPS)才能获取 cookie。

JS代码实现cookie的一些操作

创建cookie

function setCookie(name, value, expires, path, domain, secure) {<span style="font-family: KaiTi_GB2312;">    </span>    var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);    if (expires instanceof Date) {        cookieText += '; expires=' + expires;    }    if (path) {        cookieText += '; expires=' + expires;    }<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>if (domain) {<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span><span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>cookieText += '; domain=' + domain;<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>}<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>if (secure) {<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span><span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>cookieText += '; secure';<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>}<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>document.cookie = cookieText;<span style="font-family: KaiTi_GB2312;font-size:24px;">    </span>}

获取cookie(各个属性之间是以“;”隔开的)

function getcookie(name){var arr=document.cookie.split(';');for(var i=0;i<arr.length;i++){var arr2=arr[i].split('=');if(arr2[0]==name){return arr2[1];}return '';}}

删除cookie(设置时间为过期时间)

function unsetCookie(name) {document.cookie = name + "= ; expires=" + new Date(0);}


举例子(记住用户名)

客户端代码

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title><script type="text/Javascript" src="demo.js"></script></head><body><form id="form1" action="http://www.baidu.com/">用户名:<input type="text" name="user" /><br>密码:<input type="password" name="pass" /><br><input type="onsubmit" value="登录“ /></form></body></html>

demo.js文件代码

function getcookie(name){var arr=document.cookie.split(';');for(var i=0;i<arr.length;i++){var arr2=arr[i].split('=');if(arr2[0]==name){return arr2[1];}return '';}}function setcookie(name,value,iDay){var odate=new Date();odate.setDate(odate.getDate()+iDay);document.cookie=name+'value';'expires='+odate;}//alert(document.cookie);//alert(getcookie('user'));window.onload=function (){var oForm=document.getElementById('form1');var oUser=document.getElementsByName('user')[0];oForm.onsubmit=function(){setcookie('user',oUser.value,14);}oUser.value=getcookie('user');}

PS:我用火狐浏览器做的实验,右击页面——“查看页面信息”——“安全”——“查看cookie”,在这里可以查看火狐浏览器的cookie。


总结

    学习cookie这个东西,以前总是说,从宏观到细节,没有感觉到什么,但现在好像有点感悟,我认为,要想自己的学习更加高效和快速,找到合适方法去实施,更加重要。

0 0
原创粉丝点击