您的位置 首页 php

基础面试系列-session与cookie区别

1.为什么会有cookie和session

这是因为http协议的无状态性,如用户访问

www.jd.com/a.html

www.jd.com/b.html

这两个页面是没有任何关系的,那怎么标识这两次是一个人访问的呢,cookie和session就应运而生了。

早期的web应用,使用cookie较多,使用cookie可以减轻服务器的负担;由于cookie的缺点也较多,所以目前很少单纯用cookie ,基本都是cookie+session。

重要的数据放session,非机密的东西可以考虑放cookie。

2. cookie和session区别

cookie存储在客户端,session存储在服务器端,cookie的产生是在服务端产生的,

存储大小有限制,单个cookie保存的数据不能超过4kb,个数和具体浏览器有关,如Firefox限制50个 ,另外server端对header的大小也有限制,不能无限扩展。session存储大小无限制

3.二者关系

二者是有关联的,浏览器禁用cookie,session也会无法使用,这是因为session_id需要通过cookie传递。

如图,我禁用了www.jd.com的cookie,首页和订单页

首页未显示登录

首页登录状态没了,其他子域名显示正常。

订单页是登录的

二者是如何关联的呢,以php为例,服务器session开启后,会向浏览器发送一个PHPSESSID的cookie,浏览器后续的访问都会带上这个cookie。服务器根据这个cookie确认身份。

当然,如果浏览器禁用cookie,PHPSESSID还可以通过url传递,服务器接收到PHPSESSID的值,还是可以取到session信息,但是目前看各大网站都没有处理cookie禁用的情况,可能也没必要考虑吧。

session_id传输图

最后说说token的应用

随着互联网应用的规模越来越大,分布式和大规模集群的应用,使用cookie和session的局限性也越来越大,限制了系统的扩展性,所以现在的系统越来越多使用token来替换了传统的cookie和session,如常用的jwt。

文章来源:智云一二三科技

文章标题:基础面试系列-session与cookie区别

文章地址:https://www.zhihuclub.com/153120.shtml

关于作者: 智云科技

热门文章

网站地图