使用cookie的注意事项
一、什么是cookie?
Cookie(复数形态Cookies),中文名称为小型文本文件或小甜饼[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。为网景公司的前雇员Lou Montulli在1993年3月所发明。【来自维基百科】
Cookie是保存在客户端中的一小段文本信息,在你浏览网页的时候,浏览器就会将其存储在硬盘上,下次访问同一地址的时候,只要cookie没有失效,浏览器就会将其信息再次发给服务器。所以,cookie伴随着用户请求和页面在web服务器和浏览器之间进行传递。cookie中包含着用户每次访问站点的时服务器端可以读取到的信息。
二、cookie 解决了什么问题?
解决了同一浏览器访问不同网页的时候,信息不能共享的问题。为什么呢?因为http协议是无状态的,对于同一个浏览器发出的多个请求,web服务器是无法区分来源的。cookie解决了这个问题。
三、cookie 是怎么交互的?
是通过http的响应头和请求头使客户端和服务器端进行交互的。
举个例子:以360账号登陆为例,在登陆360用户中心的时候,会向yunpan.cn这个域里面写cookie的。我们打开fiddle来看下服务器是如何写到yunpan.cn这个雨里面的吧。

从上图中可以看出,服务器端的cookie 是通过http响应头来发送给客户端的,每次一个写入动作,都会产生Set-cookie 的响应头,浏览器获取响应头后,来接受cookie的
现在我们去访问yunpan.cn 这个域的时候,我们发现,我们没有输入用户名和密码,直接登陆了。同样,我们用fillder来看看具体的过程

从上图中,我们看到cookie的值是在http的请求头里面,发送给服务器的。
四、cookie的参数以及其含义
| 参数 | 含义 | 取值 | 备注 |
| name=<value>[名称=<值>] | name表示cookie的key | value 表示key的取值 | 存储value的值时候必须转义,一般用encodeURICompoment 进行转义,对key的合法性也必须进行检查 |
| [; expires=<date>] | cookie的过期日期, | 以ms为单位,GMT为标准 | 缺省为空,该cookie只能被浏览器的 |
| [; domain=<domain>] | 生效的域名 | 域名 | 可以缺省,即为当前网页的域名 |
| [; path=<path>] | 生效的路径 | /path | 可以缺省,即为当前网页所在的目录,cookie不能跨Path访问,但是可以访问到父级目录设置的cookie |
| [; secure] | 安全性 | true/false | 可以缺省,表示cookie只能在https链接中被浏览器传递到服务器端进行会话验证,http是不会传递该信息的 |
五、cookie 在不同浏览器中的差异
| 浏览器的类别 | 单域名cookie的数量上限 | 单个cookie的容量上限 | cookie的总上限 | 说明 |
| ie6 | 50 | 4095 | 4095 | 当cookie的数量超过的时候,会踢出之前的生成的cookie,保存最新的cookie的值的 |
| ie7 | 50 | 4095 | 4095 | 同上 |
| ie8 | 50 | 4095 | 4095 | 同上 |
| ie9 | 50 | 4095 | 4095 | 同上 |
| firefox12 | 150 | 4097 | 4097 | 同上 |
| chrome17 | 160~170 | 4097 | 4097 | 同上 |
| Safari | 没有限制 | 4097 | 4097 |
六、利用cookie可以做什么?
(1)保存用户的登陆状态,例如上例中的,用户进行登陆,成功登陆后,服务器生成特定的cookie返回给客户端,客户端下次访问该域名下的任何页面,将该cookie的信息发送给服务器,服务器经过检验,
来判断用户是否登陆。
(2)记录用户的行为,例如,京东商场左下角有一个最近访问的产品记录信息,当当网上有你最近浏览过的书籍信息,都是根据用户访问页面,记录到cookie的信息来制作的。
(3)电商购物车的处理,因为在不同页面,点击添加到购物车,这个信息也是记到了cookie里面。结账的时候统一提交
(4)定制页面。如果网站提供了换肤的功能,我们这个时候也是将他记录到cookie里面,以便下次访问还是保持原来的风格页面。
七、cookie的安全性
cookie是不安全的,因为他可以被用户篡改。同时由于cookie存储大量的信息,一旦这些信息泄露出来,也是危害很大的,所以,我们要慎用cookie
附录:测试代码

<!DOCTYPE HTML>
<html >
<head>
<meta charset="gbk">
<title></title>
<script type="text/javascript">
function setCookie(key,value, expire, domain){
var exp = new Date();
exp.setTime(exp.getTime() + expire);
var str = key + "=" + encodeURIComponent(value) + ";expires=" + exp.toGMTString() + ";path=/;";
if (domain && domain != 'localhost') {
str += "domain=" + domain;
}
document.cookie = str;
}
for(var i=0;i<300;i++){
setCookie('yupeng'+i,'test'+i);
};
document.write(document.cookie);
</script>
</head>
<body>
<div onclick="alert('\"')">123123123</div>
</body>
</html>

使用cookie的注意事项的更多相关文章
- fsockopen读取、发送cookie及注意事项 -代码示例
function httpPost($url, $data,$cookieStr='') { $url_array = parse_url($url); $host = $url_array['hos ...
- 关于设置了setMaxAge(0)而浏览器未成功删除Cookie的注意事项
最近做了个系统,其中涉及到对Cookie的操作.当用户登录时,设置一些数据到Cookie中,用户登出系统的时候删除写入浏览器中的对应Cookie.问题就出在登出系统时,在firebug中看到需要删除的 ...
- COOKIE和SESSION关系和区别
一.cookie介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 c ...
- (进阶篇)浅谈COOKIE和SESSION关系和区别
COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...
- Cookie和Session (转)
Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态.它们有各自的缺点和优点.而且,他们的优点和应用场景是对立的. Cookie 完整地描述:当一个用户通过HTTP访问一个 ...
- js基础---cookie存储
一.Cookie是什么Cookie是一种客户端(浏览器)把用户信息以文件形式存储到本地硬盘的技术,说白了就是一种浏览器技术 二.Cookie的作用Cookie的作用很单一,就是存储客户数据.(存储数据 ...
- 说说Cookie和Session
Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态.它们有各自的缺点和优点.而且,他们的优点和应用场景是对立的. Cookie 完整地描述:当一个用户通过HTTP访问一个 ...
- COOKIE和SESSION关系和区别等
一.cookie介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 c ...
- 基于javaWeb阶段下的Cookie和Session总结
1. 会话技术 就是用户在使用浏览器浏览界面的时候,去访问多个页面后一次性关闭浏览器,这个过程叫会话,学习会话技术就是在客户端与服务器进行交互的时候为了能更好的保存数据.在java中会话技术只有C ...
随机推荐
- 【zookeeper】
window下安装zookeeper三结点集群: 1:解压缩zookeeper压缩包:复制三分并且命名成:Server_A Server_B Server_C 2:拷贝conf目录下的文件zoo ...
- C#单例---饿汉式和懒汉式
单例模式: 步骤: 1.定义静态私有对象 2.构造函数私有化 3.定义一个静态的,返回值为该类型的方法,一般以Getinstance/getInit为方法名称 单例模式有懒汉和饿汉,最好使用饿汉 1. ...
- Python3中开发目录的引用
Python3中开发目录的引用 import os,sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ...
- 安卓手机牛逼软件Termux中安装Archlinux,安装Jdk
说出来你可能不信,手机上居然装了两个linux系统,和真实的linux有些许些差别. 首先安装了Termux以后你发现,好多linux常用功能都有,什么Pyhton,gcc,g++,ruby,Php, ...
- Python学习过程(一)
Hi,最近得知了有这么一种计算机语言,名字叫Python,下面对自己从零开始学习的一个记录.被大家所熟知的语言有很多种,比如说C语言 .java .C++ .C#等,以及javascri和火的一塌糊 ...
- 【记录一下】从0到1 我的python开发之路
请设计实现一个商城系统,商城主要提供两个功能:商品管理.会员管理. 商品管理: - 查看商品列表 - 根据关键字搜索指定商品 - 录入商品 会员管理:[无需开发,如选择则提示此功能不可用,正在开发中, ...
- pytorch tensor与numpy转换
从官网拷贝过来的,就是做个学习记录.版本 0.4 tensor to numpy a = torch.ones(5) print(a) 输出 tensor([1., 1., 1., 1., 1.]) ...
- 页面加载完成前的loading加载效果
/*loading.js*/ // 加载HTML图 var _LoadingHtml = '<div id="loadingDiv" style="position ...
- 小乐乐打游戏(BFS+曼哈顿距离)
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 小乐乐觉得学习太简单了,剩下那么多的时间好无聊 ...
- bs4的简单使用
一.使用流程 解析流程: 1.pip install bs4 2.导包:from bs4 import BeautifulSoup 3.实例化一个BeautifulSoup对象(将页面源码数据加载到该 ...