当前位置: 代码迷 >> Web前端 >> Cookie简介(1)
  详细解决方案

Cookie简介(1)

热度:122   发布时间:2012-11-05 09:35:12.0
Cookie简介(一)
Cookie的四个属性
1:max-age
  指定Ccookie的生存周期(以秒为单位)!默认情况下,Cookie的值只在浏览器的会话期间存在,当用户退出浏览器这些值就消失了!

2:path
  指定与Cookie关联在一起的网页.默认情况下,cookie会和创建它的网页以及与这个网页处于同一个目录下的网页和处于该目录下的子目录关联。

3:domain
  设置访问域
  举个例子:位于order.example.com的服务器要读取catalog.example.com设置的cookie.这里就要引入domain属性,假定由位于catalog.example.com的页面创的cookie把自己的path属性设置为"/",把domain属性设置为".example.com",那么所有位于"catalog.example.com"的网页和所有位于"orders.example.com"的网页以及所有位于example.com域的其他服务器上得网页都能够访问这个cookie.如果没有设置cookie的domain值,该属性的默认值就是创建cookie的网页所在的服务器的主机名。
  注意:不能将一个cookie的域设置成服务器所在的域之外的域.

4:seure
  指定在网络上如何传输cookie的值
 
什么叫第三方cookie:就是那些和Web页面的图像相关而不是和Web页面本身相关的Cookie。

检查浏览器是否激活Cookie:可以通过navigator.cookieEnabled属性来做到这一点,如果为true,cookie是激活的,false说明cookie是关闭的。
<script type="text/javascript">
	alert(navigator.cookieEnabled);
</script>

5:cookie的存储
  document.cookie = "version = " + "version = " + encodeURIComponent(document.lastModified);

  注意:cookie的值不能有分号,逗号和空白符.因此,需要使用核心函数JavaScript的全局函数encodeURIComponent()在把值存入cookie之前对他进行编码。如果这样做了,那么在读cookie的时候也必须使用相应的decodeURICompoent()函数解码。
 
  要改变一个cookie的值,使用同一个name,path和domain以及新的值再一次设置cookie的值即可。
 
  要删除一个cookie,再次使用同一个name,path和domain,指定一个任意的值,并且max-age属性设置为0.
 
6:cookie的读取
var allcookies = document.cookie;

var pos = allcookies.indexOf("version=");

if(pos != -1){
	var start = pos + 8;
	var end = allcookies.indexOf(";",start);
	
	if(end == -1) end = allcookies.length;
	var value = allcookies.substring(start,end);
	value = decodeURIComponent(value);
	
	if(value != document.lastModified)
		alert("this document has changed since you were last here");
}


cookie持久化的几个缺点:
1:数据大小在4KB。
2:即便cookie仅为客户端脚步使用,他们还是要上传到web服务器上,一满足他们相关的任意web页面的要求。当cookie在服务器上没有
使用时,造成了带宽的浪费.
  相关解决方案