cookie和session的区别

一:存放位置不同

        cokkie数据保存在客户端,session数据保存在服务端

二:session比cookie安全

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

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

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

四:cookie比session持久

        session的CookieJESSIONID的过期时间默许为-1,只要关闭浏览器,session就会失效。而cookie可以在浏览器上保存很长时间

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

session工作原理

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

(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该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浏览器请求服务器无法携带 sessionid服务器无法识别请求中的用户身份session失效

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

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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值