HTTP Brower Server | Cookie & Session

本篇博客用来分析比较Session和Cookie,向伟人致敬。
Cookie
Cookie小饼干是由特定浏览器根据用户上网行为,存储在本地计算机的数据,最大是4k,比如浏览器用户登录账号和密码,用户向某些网站服务器发出请求时,会带上Cookie中的部分信息,目的是使服务器能标识本次请求来自某特定的用户,解决了HTTP协议的无状态弊端。

Session
Session(会话)是存储在服务器端的用户信息数据,数据量大小没限制,Session有一个标识SessionId是保存在用户的Cookie中的,当用户第一次请求时,会被某个特定的网站服务器随机分配(GUID),在此之后的用户请求中,SessionId会被发送到服务器中,服务器根据SessionId查询存储在服务器端的数据,然后决定用户的具体行为。

总结
可以说,Session就像是一个存在于服务器端的Cookie,这个东西符合对称原理,在服务器端增强了Cookie的功能,有人提出问题说,如果浏览器禁用了Cookie怎么办?ASP.NET提供了一种方式,URL重写将SessionId放置到URL中。大致过程就是,第一次用户请求是没有sessionId的,那么,服务器返回数据中包含SessionId,可以存储在表单的Hidden Fields,可以引导浏览器保存在本地文件,服务器帮助建立一个新式Cookie数据。

提问环节
1.如果浏览器禁用了Cookie,要做到同样的事情,该怎么做?
java中有JSP的一个方法,response.encodeUrl(“FormerUrl”).,该方法可以智能判断浏览器是否禁用了Cookie,如果禁用了就将SessionId添加到每个URL请求后面。
.NET中吧,我觉得应该在路由那里添加,JSP的做法不符合AOP思想,或者我可以自己封装一个类,在这里集中处理所有的URL请求。呵呵,这好像就是NET Core中的中间件思想了,可以在请求处理前后增加很多处理组件。

写在最后
感谢阅读来访。

猜你喜欢

转载自blog.csdn.net/qq_37040173/article/details/81867209