文章目录
1. 什么是 cookie?
cookie 是一些数据, 存储于你电脑上的文本文件中
2. cookie 的作用
解决 "如何记录客户端的用户信息"
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。
cookie的出现就是为了解决这个问题!!!
cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息。
那如何识别特定的客户呢?
cookie来也!每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,在很长一段时间里面都可以保留着,即便这之间你把电脑关机了。
第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。
cookie 以名/值对形式存储:username=Ryan
当用户访问 web 页面时,他的名字可以记录在 cookie 中。
在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。服务端通过这种方式来获取用户的信息。
3. cookie的特点
-
cookie是不加密的,可以被篡改和攻击
-
cookie只支持存储string类型的数据
-
cookie大小受到限制(存储少量数据)
不同的浏览器有不同的存储大小,但一般不超过4KB
-
cookie存储在客户端(本地浏览器)
换句话说,通过某些手法我就可以篡改本地存储的信息来欺骗服务端的某些策略,那该怎么办呢?来看看另外一位朋友 —— Session
4. 什么是session?
用户登录时,服务端创建的一个数据结构,用来存储用户的登录信息,可以保存在文件、数据库中。
在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。
其实并不是Session消失了,而是Session ID变了,服务器端可能还是存着,只是他们是无主状态,也许一段时间后会被删除。
5. session的作用
session和cookie的作用有点类似,都是为了存储用户相关的信息
不同的是,cookie是存储在本地浏览器,而session存储在服务器。
存储在服务器的数据会更加的安全,不容易被窃取。
但存储在服务器也有一定的弊端,就是会占用服务器的资源,
6. session的特点
-
存储在服务器端
-
可以存储任意类型的数据
-
通过sessionId,来区分不同用户的数据,保证不同用户的数据不会混乱
7. cookie和session的不同
-
cookie数据存放在客户的浏览器上;session数据放在服务器缓存中。
-
cookie是明文,不安全,别人利用cookie可以被篡改和攻击;
而session存放服务器缓存中并且加密的,其他用户看不到。
-
session会在一定时间内保存在服务器上,会比较占用你服务器内存,
考虑到减轻服务器性能方面,使用cookie。
-
单个cookie保存的数据不能超过4KB,很多浏览器限制一个站点最多保存20个cookie;
session的密钥(cookie),可以对应可以对应无限大的数据
8. cookie和session结合使用的方式
-
存储在服务端:
- 通过cookie存储一个session_id,然后具体的数据则是保存在session中。
- 如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来
- 服务器根据session_id在session库中获取用户的session数据,就能知道该用户到底是谁,以及之前保存的一些状态信息。
-
将session数据加密,然后存储在cookie中。