笔记-Cookie基础知识

来源:互联网 发布:java怎么求质数 编辑:程序博客网 时间:2024/05/18 22:56

一、cookie 工作原理

Cookie是在浏览器访问Web服务器的某个资源时,由Web 服务器在HTTP 响应消息头文件中附带传递给浏览器的一些数据。如果浏览器保存了这些数据,当它每次访问该web服务器时,都应在HTTP 请求头文件中将这些数据回传给WEB 服务器。WEB 服务器将这些数据在HTTP 请求头文件中使用Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP 请求消息中增加Cookie请求字段将Cookie回传给web服务器,一个Cookie只能标识一种信息。一个web 服务器可以给浏览器发送多个Cookie ,这样web服务器和浏览器之间可以使用多个Cookie 来传递信息。


(个人理解:服务器设置在HTTP 响应头使用Set-Cookie字段设置cookie,浏览器访问服务器时,相应cookie便保存在浏览器端(键值对形式)。当该浏览器再次访问该web服务器时,便将本地的cookie(键值对)随HTTP 请求一同发给web服务器,从而使服务器可根据此cookie的特定值做出特定的响应(如将cookie值用于将要返回给浏览器的页面中),如显示欢迎特定的用户。)


二、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;


首先,将cookie名称和值放入一个变量中,语法:
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仍然广泛使用。
0 0
原创粉丝点击