一、cookie 工作原理
Cookie是在浏览器访问Web服务器的某个资源时,由Web 服务器在HTTP 响应消息头文件中附带传递给浏览器的一些数据。如果浏览器保存了这些数据,当它每次访问该web服务器时,都应在HTTP 请求头文件中将这些数据回传给WEB 服务器。WEB 服务器将这些数据在HTTP 请求头文件中使用Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP 请求消息中增加Cookie请求字段将Cookie回传给web服务器,一个Cookie只能标识一种信息。一个web 服务器可以给浏览器发送多个Cookie ,这样web服务器和浏览器之间可以使用多个Cookie 来传递信息。
*name:cookie属性中唯一必须设置的属性,名称。
*expires:指定cookie在删除之前要在用户的计算机上保留多长时间。如果不设置,则该cookie只对当前浏览器的会话有用,当关闭浏览器页面时,cookie自动消失。
*path:决定该cookie对于服务器上的其他网页的可用性,一般情况下,cookie对于同一目录下的所有页面都可用。当设置path后,cookie只对指定路劲及其子目录下的所有网页有效。
*domain:许多服务器由多台服务器组成,domain属性主要用于设置相同域的多台服务器共享一个cookie。*secure:Internet连接本身是不安全的,为了保证Internet上数据的安全,会使用SSL协议加密数据并使用安全连接传输数据,一般支持SSL的网站以HTTPS开头,cookie的secure属性表示只能使用HTTPS或其它安全协议的Internet连接来传输。如果该属性不出现,意味着cookie是在网络上未加密发送。
三、cookie的读写
*cookie写入:
cookie存储在document对象的cookie属性中,它实际上是一个字符串,当页面载入时自动生成。cookie的一组信息由分号和一个空格隔开,每个信息都由cookie名称和cookie值组成。
如:
name1=value1;name2=value2;name3=value3;
var cookiename="name4";
var cookievalue="value4";
var totalcookie=cookiename+"="+cookievalue;
然后,将该变量赋给document对象的cookie属性即可。语法:
document.cookie=totalcookie;
重要说明:
1、当用户将cookie写入后,新的cookie字符串并不覆盖原来的字符串,而是自动添加到原来cookie字符串的后面。例如:
name1=value1;name2=value2;name3=value3;name4=value4
2、一般情况下,cookie本身并不能包括分号、逗号或空格等专用字符,但是对于这些字符可以使用编码的形式进行传输,也就是将文本字符串中的专用字符转换成对应的16进制ASCII码。
3、在JavaScript中可以使用encodeURL()函数将文本字符串编辑为一个有效的URL.相应的,读取时使用decodeURL()进行解码。
4、将单选框的值放入cookie中较为特别,需要遍历页面中所有的单选框。关键代码可为:
function testRadio(){var charactergroup=document.forms[0].elements["sex"];
for(var i=0;i<charactergroup.length;i++){
document.cookie=encodeURL("sex"+charactergroup[i].value);
}
}
//说明:elements["sex"]中sex为forms[0](第一个表单)中的某个表单元素的id。
关于forms集合,可查看JavaScript DOM forms集合!
*cookie读取:
思路简单,通过字符串的split("splitChar")函数分割document.cookie中各值对取出即可。split函数返回一个数组,该数组包含分割后的各字符串子串。
四、cookie的安全问题
*有种技术手段可截取cookie,从而造成信息的不安全,为此可通过MD5 技术加密。但依旧不是绝对安全的(似乎没有什么是绝对安全的)。cookie仍然广泛使用。