session与cookie的区别

zhongJaywang zhongJaywang     2022-08-03     649

关键词:

作者:郭无心
链接:https://www.zhihu.com/question/19786827/answer/66706108
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

COOKIE和SESSION有什么区别?
cookie保存在客户端,session保存在服务器端,
cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码
session用来跟踪会话


当我们登录网站勾选保存用户名和密码的时候,一般保存的都是cookie,将用户名和密码的cookie保存到硬盘中,这样再次登录的时候浏览器直接将cookie发送到服务端验证,直接username和password保存到客户端,当然这样不安全,浏览器也可以加密解密这样做,每个浏览器都可以有自己的加密解密方式,这样方便了用户,再比如用户喜欢的网页背景色,比如QQ空间的背景,这些信息也是可以通过cookie保存到客户端的,这样登录之后直接浏览器直接就可以拿到相应的偏好设置。

②跟踪会话,比如某些网站中网页有不同的访问权限,有只能登录的用户访问的网页或者用户级别不同不能访问的,但是http请求是无状态的,每次访问服务端是不知道是否是登录用户,很自然的想到在http请求报文中加入登录标识就可以了,这个登录标识就可以是cookie,这样的cookie服务端要保存有所有登录用户的cookie,这样请求报文来了之后拿到登录标识cookie,在服务端进行比较久可以了。再比如购物网站,多次点击添加商品到购物车客户端很容易知道哪些物品在购物车中,但是服务端怎么知道每次添加的物品放到哪个登录用户的购物车中呢?也需要请求报文中带着cookie才行(在不登陆的情况下京东也是可以不断添加商品的,推测应该是登录的时候一并创建cookie并且发送物品信息),这些cookie都是为了跟踪会话用的,所以客户端有,服务端也有,并且服务端有全部的会话cookie。

后面衍生出session技术,session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。

http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6之类的字符串。



大家请看在HTTP请求报文头的最后一行有cookie,不过是JSessionID的cookie值


Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23BE13C4C

比如前两个值,应该属于偏好设置之类的。


服务端是怎么知道客户端的多个请求是隶属于一个Session呢?注意到后台的那个jsessionid=5F4771183629C9834F8382E23BE13C4C木有?原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后面哦)。
明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如 session cookie安全了。


通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。
在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和区别,我们就不难选择合适的技术来开发web service了。

详解cookie与session的区别,新手必看!

cookie与session的区别:  1、cookie数据存放在客户的浏览器上,session数据放在服务器上。  2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗  考虑到安全应当使用session。  3、session会在一定时间内保... 查看详情

cookie与session的区别?

一、cookie机制和session机制的区别具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以sess... 查看详情

session与cookie的区别?

session:存储在服务器上的php指定的目录中的(session_dir)的位置cookie:存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。①cookie数据存放在客户的浏览器上,session数据放在服务器上②cookie不是很安全,别人可以分析... 查看详情

session与cookie的区别

①Cookie存储在本地浏览器上,可以被伪造,安全性低;Session存储在服务器上,过多的Session会消耗服务器资源②每个Session都有一个sessionID,当服务器生成一个session时,就会往客户端发送一个cookie,这个cookie里面存储的就是sessionI... 查看详情

cookie与session区别

session与Cookie的区别此文章来自乌龟运维wuguiyunwei.comQQ群:602183872主要区别:Cookie,也称为HTTPcookie,Webcookie或浏览器cookie,是从网站发送到服务器并存储在用户的Web浏览器中的一小部分数据。Cookie用于向网站创建者发送关于上次访... 查看详情

cookie与session区别

session与Cookie的区别此文章来自乌龟运维wuguiyunwei.comQQ群:602183872主要区别:Cookie,也称为HTTPcookie,Webcookie或浏览器cookie,是从网站发送到服务器并存储在用户的Web浏览器中的一小部分数据。Cookie用于向网站创建者发送关于上次访... 查看详情

session与cookie的区别

1、cookie数据存放在第三方应用的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE,进行COOKIE欺骗  考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增... 查看详情

session与cookie的区别

Cookie与session的区别此文章来自乌龟运维wuguiyunwei.comQQ群:602183872主要区别:Cookie,也称为HTTPcookie,Webcookie或浏览器cookie,是从网站发送到服务器并存储在用户的Web浏览器中的一小部分数据。Cookie用于向网站创建者发送关于上次访... 查看详情

cookie与session的区别

本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。 cookie机制 Cookies是服务器在本地机器上存储的小段文... 查看详情

session与cookie的区别

...乎著作权归作者所有,转载请联系作者获得授权。COOKIE和SESSION有什么区别?cookie保存在客户端,session保存在服务器端,cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码session用来跟踪会话①当我们登录网站勾选... 查看详情

session与cookie的区别

    1.session:储存用户访问的全局唯一变量,存储在服务器上指定的目录中的(session_dir)的位置进行存放.   2.cookie:用来存储连续访问一个页面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的.  ... 查看详情

cookie与session的区别与联系

...以两者没有直接的关系,禁用cookie后seesion依然可以用。session的运行依赖于sessionid,而sessionid是存在cookie中的。也即,如果客户端禁用了cookie(每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用... 查看详情

cookie与session的区别与联系

...以两者没有直接的关系,禁用cookie后seesion依然可以用。session的运行依赖于sessionid,而sessionid是存在cookie中的。也即,如果客户端禁用了cookie(每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用... 查看详情

cookie与session的区别?

Cookie与Session的区别?1.Cookie与Session都是会话技术,Cookie是运行在客户端,Session运行在服务端。2.Cookie有大小限制,以及浏览器在存Cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。3.Cookie有安全隐患,通过... 查看详情

cookie与session的区别

cookie和session的区别相同点:都是用来做会话跟踪的区别:区别cookiesession数据存放位置客户端服务器存储类型只能存储文本类型可以存储object类型是否安全不安全,别人可以分析存放在本地的cookie并进行cookie欺骗session相对来说更... 查看详情

cookie与session的区别

...道下次来访问的还是不是上次访问的客户端。  Cookie与Session的作用都是保持客户端与服务器的交互状态。但是它们的优点和它们的使用场景是矛盾的。当使用Cookie来传递信息时,随着访问量的增加,Cookie个数越来越多,它占... 查看详情

cookie与session的区别与联系

...上的网页和你之前打开这个网页之间没有联系。2.cookie和session原理:cookie和session是一种会话跟踪技术。cookie在客户端(浏览器)保存状态,session在服务器端保存状态。cookie:客户端浏览器发送一个http请求给web服务器。web服务器... 查看详情

session与cookie的区别用法

//设置cookie方法setcookie("name",‘zhangsan‘);setcookie("name",‘zhangsan‘,time()+60);//设置cookie有效时间为60秒//setcookie("visittime",date("y-m-dH:i:s"),time()+60);//设置保存cookie失效时间的变量//读取cookie方法$name=$_COOKIE["n 查看详情