Session与Cookie间不得不说的一些事

在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车、用户登录、自动登陆等。但是客户端只有一个浏览器,怎么在用户也就是客户端那边保存数据呢?于是大佬们一拍桌子,Cookie就诞生了!
我把Cookie理解为一个键-值形式存储再加上有效时间的一个容器,除此之外Cookie还有一个作用范围的概念(作用范围指的是域和路径,域的意思是根域名和端口,除非在设置cookie的时候特别指定域名),可以认为在同一个域里面的页面共享Cookie。Cookie的获取和设置命令都是写在 HTTP 请求或者响应头里的(也就是你要是已经开始发 HTTP 响应正文之后就不能对 Cookie 做写操作了)。
但是 Cookie 保存在浏览器本地就有个问题,这TM是明文的,容易被别有用心的软件看到。 而且不能随心所欲的更改和读取。
于是大佬们又一拍桌子就发明了Session,
Session 和 Cookie 一样也是以键值对的形式存取,只是保存的地方不一样,Cookie保存在用户端(也就是浏览器,或者是其他什么HttpClient里),但是Session的内容是保存在服务器上的。
这样就有个问题,服务器怎么知道哪个客户端对应哪个Session?
于是就在浏览器放一个叫做 SessionID 的东西用Cookie保存。
所以当你在JSP里打开了session之后,你会发现在浏览器的cookie里会多一个JSESSIONID=xxx的一个cookie项,
当然这是默认的键名,你需要的话可以改。
 
总结,Cookie和Session的用途和存储方式差不多,只是一个存储在客户端,一个存储在服务端,Session 既然存放在服务端,为了标识客户端,就在客户端的Cookie里放置一个SessionID,在使用上Session更灵活更安全。
欢迎补充与纠错。
 
本博客内容与代码均为作者Jarvis原创,如若转载请注明。
posted @ 2015-01-14 20:10  Jarvis_Wu  阅读(230)  评论(0编辑  收藏  举报