面试题:session和cookie的区别?客户端禁用cookie, session还能用吗?

session和cookie的区别

区别一:存放位置不同

cookie数据保存在客户端session数据保存在服务端

区别二:session比cookie安全

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑安全选session

区别三:cookie对服务器造成的压力比session小

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE

区别四:时长

cookie:可以自定义

session:默认是30分钟

如果客户端禁用cookie, session还能用吗?

session工作原理

(1)浏览器端第一次发送请求到服务器端服务器端创建一个Session,同时会创建一个特殊的CookienameJSESSIONID的固定值,valuesession对象的ID,然后将该Cookie发送至浏览器端

(2)浏览器端发送第N次请求到服务器端,浏览器端访问服务器端时就会携带该nameSESSIONID的Cookie对象

(3)服务器端根据nameJSESSIONIDCookievalue(sessionId),去查询Session对象,从而区分不同用户

nameJSESSIONIDCookie不存在(更换浏览器),返回1中重新去创建Session与特殊的Cookie

nameJSESSIONIDCookie存在,根据value中的SessionId去寻找session对象

valueSessionId不存在**(Session对象默认存活30分钟)**,返回1中重新去创建Session与特殊的Cookie

valueSessionId存在,返回session对象

一般默认情况下,在会话中,服务器存储 sessionsessionid 是通过 cookie 存到浏览器里。

如果浏览器禁用了 cookie浏览器请求服务器无法携带 Jsessionid服务器无法识别请求中的用户身份session失效

但是可以通过其他方法在禁用 cookie 的情况下,可以继续使用session

方案1.通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数

方案2.服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。

方案3.通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 header 字段,请求服务器时,js设置携带该 header 字段。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值