思考一:为什么要禁用Cookie?
首先,cookie是服务端生成返回给客户端的,客户端会保存cookie到本地,甚至会永久保存。cookie有跨域(协议、域名、端口其中有一个不同就会产生跨域问题)问题。
cookie是和http捆绑在一起的,应该是当时科学家在设计http协议时就定义死了一个叫做cookie的字段用来保存会话信息。
既然http协议定义了一个cookie字段用来保存会话信息,那么我们就可以将会话信息保存到cookie里面,并返回给客户端。
cookie:加密(用户信息)
因为大家都遵循http协议,因此客户端也可以获取到cookie字段,然后客户端会保留cookie到本地(其实这个是客户端开发者决定的,保不保存都可以,但是浏览器都是默认保存的,因此在开发web项目时,要考虑是否应该使用cookie,目前有的浏览器默认禁用cookie)
cookie的优缺点:
不管什么技术都有着自身的局限性,我认为cookie没有什么严重的缺点,主要是看你的业务情况,是否适合使用cookie。有的说cookie有安全性问题,会被拦截转发。我觉得不算是cookie的问题,因为数据在网络上传输,肯定会有被拦截的情况。这又是另一个问题。
使用环境:
1、web项目还是java项目?
2、单体、集群还是分布式?
不管什么使用环境都可以使用cookie,技术都是为了解决业务问题。
个人经历:
我司有个项目和腾讯教育合作,有一个功能是嵌入腾讯平台的,因为腾讯禁用了cookie。我们就直接定义一个token放到请求头中,通过这个token来跟踪会话,其实和cookie的原理是一样的。
思考二:session会话机制
cookie是将会话信息保存到客户端,session则是将会话信息保存到服务端,返回会将sessionId保存在cookie里面返回给客户端。(如果禁用了cookie,其实也可以参考我上面的方式,单独创建一个请求头来保存,比如token)
服务器创建session会保存到内存中,那么在使用session时要注意使用的环境。在集群和分布式下,session是独立的,因此要做session共享。
session和cookie都有超时设置。因为session是保存在内存中的,还需要注意内容溢出问题,需要设置session超时,要注意清空过时的session,释放内存。
Cookie与Session:机制、优缺点及应用场景分析
本文探讨了为何要禁用Cookie及其在Web项目中的使用情况,指出Cookie的安全性和跨域问题是其挑战。同时,文章介绍了Session会话机制,强调了Session在集群和分布式环境下的管理问题。文中通过实际案例展示了在腾讯平台禁用Cookie情况下如何使用token跟踪会话。总结了Cookie和Session的适用环境,并讨论了它们的超时管理和内存占用问题。
610

被折叠的 条评论
为什么被折叠?



