cookie:
cookie就是存储在用户本地终端上的数据,也可以说cookie就是表示存储数据的一种格式。
那我先说说cooike出现的原因吧:
在网站中,HTTP请求是无状态的,也就是说即使第一次与服务器连接后并且用户登录成功后,第二次访问访问服务器时,服务器依然不知道是哪个用户发过来的请求,而cookie的请求就会为了解决这一问题,当用户第一次登录时服务器会给浏览器返回一个cookie,浏览器将此保存在本地,当用户第二次发出请求时,就会自动的把上次存储的cookie发送给服务器,服务器通过浏览器携带的数据来判断用户。
cookie的机制:
cookie是由服务端生成的,发送给客户端的特殊信息(cookie信息存放在http的响应头中),当客户端收到服务端发送来的信息时,浏览器将会把cookie的(key/value)保存到本地的一个文件当中,而客户端每次向服务端发送请求时都会带上这些特殊的信息。
这里要强调一点
- cookie是由服务端产生的,而是保存在客户端的
cookie的主要用途:
1.cookie的最典型的用途是判定用户是否已经登陆过此网站,或者是提示用户是否下次登录时保存某些信息以便于下次登录时方便使用。
2.类似于"购物车"类型,用户在一段时间内在一家网站的不同页面选择不同的商品,这些信息都会保存在cookie中,以便于付款时使用。
cookie的生命周期:
cookie的生命的周期是可以自己设置的如果没有去设置cookie的生命周期的话一般浏览器会默认为浏览器的会话期间,浏览器关闭cookie以将消失
如果是通过设置的话,如在python的django中可以使用 response.set_cookie()来设置过期时间,单位为s秒
cookie的功能特点:
cookie必须在HTML文件的内容输出之前设置在客户端,一个浏览器能创建的cookie数不能超过300个,并且每个不能超过4kb,每个web站点能设置的cookie总数不能超过20个。
session:
session称为“会话控制”和cookie的作用有点类似,都是为了存储用户的相关信息。也可以说是一种存储方式
session的机制:
一般来说有session的地方一定有cookie,用户通过浏览器讲信息发送到服务器中,当拿到用户的id时,并不是马上的将这些信息存在服务器当中,而是经过加密以后将这些信息存到session中,并且随机产生一个唯一的session_id,然后将session_id返回到浏览器,而这session_id将会保存在cookie当中。下一次浏览器访问服务器是浏览器会吧cookie信息发送到服务器,然后拿到cookie以后从cookie中找到session_id,通过session_id找到对应的session信息。这样可以达到识别用户的功能。
使用session的好处:
1.敏感的数据不是直接发送给浏览器而是发送一个session_id,服务器将session_id和敏感数据映射存储在session中,更加安全
2.session可以设置过期时间,可以保证用户的安全
cookie与session的区别:
cookie数据是存放在客户端浏览器上 ,session是存放在服务器上
cookie是不安全的,别人可以进行cookie进行cookie诈骗,考虑到安全应该使用session
session会保存在服务器上的。当访问量变大时,会占用服务器的性能,考虑到减轻服务器的性能应该使用cookie