JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

什么是Cookie

在说cookie之前,先来看两个例子。

例子 1:如果经常上网,会发现很多网站都有一个功能,下次自动登录,或者一个月内免登录,只要我们不点击“退出”按钮,一段时间后再回到该网站,发现依然在线。这个功能很实用,避免了多次登录带来的不便。

例子 2:目前的互联网,很多网站都是靠百度联盟和谷歌联盟的广告来盈利,细心地朋友可能会发现,这些广告都有跟踪功能,我们需要什么服务就显示什么广告。比如,你正在准备考研,在百度搜索了很多与考研有关的信息,浏览了很多与考研有关的网站,当你再次浏览一个与考研无关的网站时,这个网站上显示的却是考研的广告,我们很惊讶的发现,百度太聪明了。

这两个例子是经常见到的,都是 cookie 在发挥作用。没有 cookie ,这些功能实现起来很困难,甚至无法实现。

什么是 cookie

有时候,服务器需要保存用户的信息,这些信息最好放在用户的电脑上,并能够让服务器获取。例如自动登录功能的实现,需要将用户名和密码保存在本地,下次访问网站时,再将用户名和密码发送到服务器进行验证,验证通过后自动登录,否则不能登录。

这些服务器在用户电脑上保存的信息,就叫 cookie 。

cookie 保存在用户的电脑上,当再次访问相应网站时,浏览器会把 cookie 一起发送到服务器,让服务器进行处理。

cookie 可以由服务器端程序(PHP、ASP、JSP、Python)生成,也可以由客户端脚本(JavaScript)生成。服务器生成的 cookie 会添加到 http 报头,随 http 请求发送给浏览器,浏览器再把它保存成本地的文件;JavaScript生成的 cookie 直接由浏览器保存在本地文件。

cookie 也是随 http 请求发送给服务器的,当浏览器发送 http 请求时,会将 cookie 添加到 http 请求的报头发送到服务器,再由服务器进行处理。

为什么需要 cookie

HTTP协议是无状态的,对于一个浏览器发出的多次请求,服务器无法区分是不是来源于同一个浏览器,需要额外的数据来辨认,cookie 正是这样的一段随HTTP请求一起被传递的额外数据。

cookie能做什么

cookie 只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大。 Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以, 不适合保存重要的或者涉及隐私的内容。

cookie 的限制

大多数浏览器支持最大为 4096 字节的 Cookie。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。用户 ID 随后便可用于标识用户,以及从数据库或其他数据源中读取用户信息。 浏览器还限制网站可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个网站存储 20 个 Cookie;如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。

cookie 的形式

cookie 是以 键/值 对的形式存在的,每个“ 变量 ”对应一个值,相互之间以分号隔开,如下所示:
username=itxueyuan;password=123456;age=22

总结:cookie通常用来保存服务器的信息(或者说维持会话),由服务端程序或者JavaScript脚本写入,在后续请求中,供服务器读取。