博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie
阅读量:4641 次
发布时间:2019-06-09

本文共 2874 字,大约阅读时间需要 9 分钟。

一、什么是cookie

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

要跟踪该会话,必须引入一种机制。

Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

二、cookie的使用

JS读取cookie:

假设cookie中存储的内容为:name=jack;password=123

则在B页面中获取变量username的值的JS代码如下:

var username=document.cookie.split(";")[0].split("=")[1];

  

1 //设置cookie 2 function setCookie(name,value) 3 { 4 var Days = 30; 5 var exp = new Date(); 6 exp.setTime(exp.getTime() + Days*24*60*60*1000); 7 document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 8 } 9 10 //获取cookie11 function getCookie(name)12 {13 var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");14 if(arr=document.cookie.match(reg))15 return unescape(arr[2]);16 else17 return null;18 }19 //删除cookies20 function delCookie(name)21 {22 var exp = new Date();23 exp.setTime(exp.getTime() - 1);24 var cval=getCookie(name);25 if(cval!=null)26 document.cookie= name + "="+cval+";expires="+exp.toGMTString();27 }28 //使用示例29 setCookie("name","hayden");30 alert(getCookie("name"));31 //如果需要设定自定义过期时间32 //那么把上面的setCookie 函数换成下面两个函数就ok;33 //程序代码34 function setCookie(name,value,time)35 {36 var strsec = getsec(time);37 var exp = new Date();38 exp.setTime(exp.getTime() + strsec*1);39 document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();40 }41 function getsec(str)42 {43 alert(str);44 var str1=str.substring(1,str.length)*1;45 var str2=str.substring(0,1);46 if (str2=="s")47 {48 return str1*1000;49 }50 else if (str2=="h")51 {52 return str1*60*60*1000;53 }54 else if (str2=="d")55 {56 return str1*24*60*60*1000;57 }58 }59 //这是有设定过期时间的使用示例:60 //s20是代表20秒61 //h是指小时,如12小时则是:h1262 //d是天数,30天则:d3063 setCookie("name","hayden","s20");

三、缺点

1.数据大小:4kb,只能存储一些简单的字段

2.安全性:在http中cookie是明文传输,有比较大的安全性

3.网络负担:cookie会被附加在每一个http请求中,增加不必要的流量损失。

 

四、cookie跨域

cookie具有两个重要属性:

1、domain-域
通过设置这个属性可以使多个web服务器共享cookie。domain属性的默认值是创建cookie的服务器的主机名。不能将一个cookie的域设置成服务器所在的域之外的域。

举个例子:

让位于a.taotao.com的服务器能够读取b.taotao.com设置的cookie值。如果b.taotao.com的页面创建的cookie把 它的path属性设置为”/”,把domain属性设置成”.taotao.com”,那么所有位于b.taotao.com的网页和所有位于 a.taotao.com的网页,以及位于taotao.com域的其他服务器上的网页都可以访问(或者说是得到)这个cookie。

2、path-路径

表示创建该cookie的服务器的哪些路径下的文件有权限读取该 cookie,默认为/,就是创建该cookie的服务器的根目录。

js设置跨域:

1 function setCookie_log (c_name,value,domain){ 2     var exdate = new Date(), expiredays = 365; 3     exdate.setDate(exdate.getDate() + expiredays); 4     //判断是否需要跨域存储 5     if (domain) { 6         document.cookie = c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/;domain=xueersi.com"; 7     } else { 8         document.cookie = c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/"; 9     }   10   }

 

 

转载于:https://www.cnblogs.com/annie211/p/10685017.html

你可能感兴趣的文章
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
Java Web项目结构
查看>>
lambda表达式树
查看>>
OpenCV YUV 与 RGB的互转(草稿)
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>
章三 链表
查看>>
Solution for Concurrent number of AOS' for this application exceeds the licensed number
查看>>
CSE 3100 Systems Programming
查看>>
IntelliJ IDEA 的Project structure说明
查看>>
Java Security(JCE基本概念)
查看>>