Java面试题

session和cookie的区别

(1)存储位置不同

        cookie在客户端浏览器
        session在服务器

(2)存储容量不同

        cookie<=4K,一个站点最多保留20个cookie
        session没有上限     

(3)存储方式不同

        cookie只能保存ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据
        session中能存储任何类型的数据,包括并不局限于String、integer、list、map等

(4)隐私策略不同

        cookie对客户端是可见的,不安全
        session存储在服务器上,安全

(5)有效期不同

        开发可以通过设置cookie的属性,达到使cookie长期有效的效果
        session依赖于名为JESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session达不到长期有效的效果

(6)跨域支持上不同

        cookie支持跨域
        session不支持跨域

客户端禁止cookie,如何继续使用session

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

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

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

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

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

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

session工作原理

        客户端登录完成,在服务端产生一个session

        服务端将sessionid返回给客户端浏览器。客户端将sessionid储存在浏览器的cookie中

        当用户再次登录,会获得对应的sessionid,然后将sessionid发送到服务端请求登录,服务端在内存中找到对应的sessionid,完成登录,如果找不到,返回登录页面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值