理解Session与Cookie

Cookie的基本理解(购物卡)

        Session与Cookie都是一种记录客户状态的机制。

        当一个用户访问服务器的时候,服务器会把一些键值对返回给客户端浏览器,并加上一些限制条件。在这个条件限制下,当用户符合条件并且在下次访问服务器的时候,会把这些键值对数据又完整的带给服务器。就好比我去某个超市,超市给了我一张购物卡。在下次我去超市的时候,超市就能快速的识别我的身份等信息。

NAME为JSESSIONID的Cookie

        同一个客户端每次与服务器交互的时候,不需要每次都把所有的Cookie都传回来。客户端第一次访问服务器的时候会生成一个唯一的ID,客户端只要传回这个ID就行了,这个ID通常是NAME为JSESSIONID的Cookie。有了SessionID,服务器端就可以创建HttpSession对象了。

Cookie安全问题

        Cookie是通过Http的请求头进行传输的,它先从服务器端传输到客户端,然后再从客户端传输到服务器端。在这个传输的过程中,所有的数据都是存放在客户端的浏览器里面,所以这些数据有一定的安全隐患。而Session将数据保存在服务器端,所以相对Cookie而言,Session的安全性较高。

Cookie与Session各自的优缺点

        大量的Cookie会占用很多网络带宽,并且不安全。另外,客户端浏览器对Cookie的存储是有数量与大小限制的。

        在分布式系统中,Session很难被多个服务器共享。

总结

1)cookie数据存放在客户的浏览器上,session数据放在服务器上。

2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

---------------------------------------------------相关的面试题-----------------------------------------------------------------------

2月12日    Cookie的一些缺点

        首先Cookie是不安全的。Cookie保存的键值对由Http请求头传输,可以直接在浏览器上查看到,数据不安全。

        其次就是客户端浏览器对Cookie的大小和数量都有所限制。

        最后一点是,如果某个网站每天都有大量的访问量,那么Cookie会随着访问量的增加而增加,这势必会占用更多的网络带宽。

2月12日    客户端浏览器禁用Cookie怎么办

         可以使用URL重写,也就是把session id附加在URL路径的后面。

2月12日    Session生命周期问题

        调用 request对象的 request.getSession()方法的时候会创建一个Session对象。 

        当Session过期或者调用session.invalidate()方法的时候,Session对象被回收。

2月12日    关闭浏览器问题

        关闭浏览器不会立即销毁session。因为session存放在服务器端。

        关闭浏览器只会让保存在客户端的Cookie失效。

 

参考面试题:cookie机制和session机制的区别(面试题)

 

posted @ 2022-07-17 12:14  小大宇  阅读(28)  评论(0编辑  收藏  举报