一、什么是cookie?

  Cookie(复数形态Cookies),中文名称为小型文本文件小甜饼[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。为网景公司的前雇员Lou Montulli1993年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('\&quot;')">123123123</div>
</body>
</html>

使用cookie的注意事项的更多相关文章

  1. fsockopen读取、发送cookie及注意事项 -代码示例

    function httpPost($url, $data,$cookieStr='') { $url_array = parse_url($url); $host = $url_array['hos ...

  2. 关于设置了setMaxAge(0)而浏览器未成功删除Cookie的注意事项

    最近做了个系统,其中涉及到对Cookie的操作.当用户登录时,设置一些数据到Cookie中,用户登出系统的时候删除写入浏览器中的对应Cookie.问题就出在登出系统时,在firebug中看到需要删除的 ...

  3. COOKIE和SESSION关系和区别

    一.cookie介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 c ...

  4. (进阶篇)浅谈COOKIE和SESSION关系和区别

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

  5. Cookie和Session (转)

    Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态.它们有各自的缺点和优点.而且,他们的优点和应用场景是对立的.   Cookie 完整地描述:当一个用户通过HTTP访问一个 ...

  6. js基础---cookie存储

    一.Cookie是什么Cookie是一种客户端(浏览器)把用户信息以文件形式存储到本地硬盘的技术,说白了就是一种浏览器技术 二.Cookie的作用Cookie的作用很单一,就是存储客户数据.(存储数据 ...

  7. 说说Cookie和Session

    Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态.它们有各自的缺点和优点.而且,他们的优点和应用场景是对立的.   Cookie 完整地描述:当一个用户通过HTTP访问一个 ...

  8. COOKIE和SESSION关系和区别等

    一.cookie介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 c ...

  9. 基于javaWeb阶段下的Cookie和Session总结

    1. 会话技术   就是用户在使用浏览器浏览界面的时候,去访问多个页面后一次性关闭浏览器,这个过程叫会话,学习会话技术就是在客户端与服务器进行交互的时候为了能更好的保存数据.在java中会话技术只有C ...

随机推荐

  1. 最新Android的SDK版本与API Level的对应关系

    Android   7.1.1                                   API Level  25   Android   7.0                     ...

  2. c++语言的学习笔记代码与笔记注释《面向对象部分》

    #include <iostream> /*这是C++中关于面向对象部分的具体笔记和代码 */ //定义类的语法形式; //类中的成员项目之间相互引用,直接使用成员; //类外引用成员的时 ...

  3. SAP 740GUI客户端快捷方式取消密码登陆

    客户端电脑:WIN10 专业版64位. 1. 进入注册表编辑器(regedit) .进入如下路径:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SAP\SAPLogo ...

  4. ThreadLocalRandom原理

    原文链接:https://www.jianshu.com/p/9c2198586f9b 2.2. 并发包中ThreadLocalRandom类原理剖析 ThreadLocalRandom类是JDK7在 ...

  5. Runtime常用的几个应用场景

    Runtime常见的几个应用场景. Runtime常见应用场景 具体应用拦截系统自带的方法调用(Method Swizzling黑魔法) 实现给分类增加属性 实现字典的模型和自动转换 JSPatch替 ...

  6. python编程技巧

  7. Git 的简单测试

    Git 简介 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开 ...

  8. Unity 动画系统 AnimationEvent 动画事件

  9. [USACO19FEB]Moorio Kart(DP)

    Luogu5243 题解 即O(N^2)暴力统计出每个森林的路径,从ctgn个集合中各选出一个数,使得长度>=Y的方案数. 用背包统计.具体实现: \(dp[i+j][0]\leftarrow ...

  10. P2925 [USACO08DEC]干草出售Hay For Sale

    传送门 把每体积的干草价值看成一,就变成求最大价值 直接上背包就行了 注意优化常数 #include<iostream> #include<cstdio> #include&l ...