网站的session机制是什么

 我来答
猪八戒网
2023-06-06 · 百度认证:重庆猪八戒网络有限公司官方账号
猪八戒网
猪八戒网(zbj.com)创建于2006年,现已形成猪八戒网、天蓬网和线下八戒工场的“双平台+一社区”服务模式,是中国领先的人才共享平台。
向TA提问
展开全部

session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。session相当于程序在服务器上建立的一份用户的档案,用户来访的时候只需要查询用户档案表就可以了。

session的生命周期与有效期

为了获得更高的存取速度,服务器一般把session放在内存里。每个用户都会有一个独立的session。如果session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。session的使用虽然比cookie方便,但是过多的session存储在服务器内存中,会对服务器造成压力。因此,session里的信息应该尽量精简。

session在用户第一次访问服务器的时候自动创建。session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该session。

由于有越来越多的用户访问服务器,因此session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的session从内存中删除。这个时间就是session的超时时间。如果超过了超时时间没访问过服务器,session就自动失效了。

session与cookie

虽然session保存在服务器,但是它的正常运行仍然需要客户端浏览器的支持。这是因为session需要使用cookie作为识别标志。HTTP协议是无状态的,session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为SESSIONID的cookie,它的值为该Session的id。Session依据该cookie来识别是否为同一用户。

对于不支持cookie的手机浏览器,有另一种解决方案:URL地址重写。URL地址重写的原理是将该用户session的id信息重写到URL地址中,服务器能够解析重写后的URL获取session的id。这样即使客户端不支持cookie,也可以使用session来记录用户状态。

应用场景

通过session累计用户数据。例如,一个未登录用户访问了京东网站,这个时候京东对其下发了一个cookie,假设cookie的名字叫做abc,那这条记录就是abc=001,同时京东的后台也生成了一个sessionid,它的值也为001,001这个客户在2点、3点、4点分别添加了三件商品到购物车,这样后台也记录了sessionid为001的用户的购物车里面已经有三件商品,并且只要每次客户端cookie带上来的值里面包含sessionid,后台都能够展示相应的数据,如果这个时候,在浏览器里面清空cookie,cookie数据消失之后,后台和客户端无法建立对应关系,购物车的数据就会失效了。

通过session实现单点登录。一个用户帐号成功登录后,在该次session还未失效之前,不能在其他机器上登录同一个帐号。登录后将用户信息保存到session中,如果此时在另外一台机器上一个相同的帐号请求登录,通过遍历(遍历的意思就是将所有session都查看一遍)Web服务器中所有session并判断其中是否包含同样的用户信息,如果有,在另一台机器上是不能登录该帐号的。

网站
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式