论坛首页 Web前端技术论坛

根本不存在什么session和cookie的区别

浏览 8848 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2014-01-12  
经常听人说session和cookie的区别,听得多了连自己都糊涂了。  根本就没这回事。  session和cookie,说到底都是cookie,因为大多数的session是用cookie来实现的。既然两个都是cookie,谈区别就显得很可笑了。


正确的说法是:session和cookie一起用,和只用cookie,两者的区别。  这样说更加反映问题的本质。


常见误区1:cookie数据存放在客户的浏览器上,session数据放在服务器上。
真相:session也要借助cookie,也要存放在客户端。

常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。

常见误区3:会话cookie即session,持久cookie即cookie。
真相:很多会话cookie并没有用到JSessionId这种服务端动态生成的机制,也就是说你每次登录进去,cookie都是一模一样的值,但是人家偏偏就是会话cookie。单凭cookie的生效时间、过期时间来判断,是不够的,要看服务端的实现原理。
   发表时间:2014-01-13  
常见误区1:cookie数据存放在客户的浏览器上,session数据放在服务器上。
真相:session也要借助cookie,也要存放在客户端。
点评:cookie与session通常都会有一个结合点,比如通过那个特殊的名字叫做JSESSIONID的cookie,或者通过加密后的cookie在服务器端还原回来类似userId等字段实现自动登录等

常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。
点评:session与cookie的生命周期都是由服务器端控制,不同的是session是到期后由服务器删除,cookie到期后由浏览器删除

常见误区3:会话cookie即session,持久cookie即cookie。
真相:很多会话cookie并没有用到JSessionId这种服务端动态生成的机制,也就是说你每次登录进去,cookie都是一模一样的值,但是人家偏偏就是会话cookie。单凭cookie的生效时间、过期时间来判断,是不够的,要看服务端的实现原理。
点评:同意!
0 请登录后投票
   发表时间:2014-01-13  
只是jsessionid在客户端cookie里有保存而已,session中其它的内容你确定能在cookie里面找到?
0 请登录后投票
   发表时间:2014-01-13  
liubey 写道
常见误区1:cookie数据存放在客户的浏览器上,session数据放在服务器上。
真相:session也要借助cookie,也要存放在客户端。
点评:cookie与session通常都会有一个结合点,比如通过那个特殊的名字叫做JSESSIONID的cookie,或者通过加密后的cookie在服务器端还原回来类似userId等字段实现自动登录等
乱弹:session有的时候也可以不用借助cookie,使用url argument也可以完成
常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。
点评:session与cookie的生命周期都是由服务器端控制,不同的是session是到期后由服务器删除,cookie到期后由浏览器删除

常见误区3:会话cookie即session,持久cookie即cookie。
真相:很多会话cookie并没有用到JSessionId这种服务端动态生成的机制,也就是说你每次登录进去,cookie都是一模一样的值,但是人家偏偏就是会话cookie。单凭cookie的生效时间、过期时间来判断,是不够的,要看服务端的实现原理。
点评:同意!

 

 

0 请登录后投票
   发表时间:2014-01-13  
cectsky 写道
liubey 写道
常见误区1:cookie数据存放在客户的浏览器上,session数据放在服务器上。
真相:session也要借助cookie,也要存放在客户端。
点评:cookie与session通常都会有一个结合点,比如通过那个特殊的名字叫做JSESSIONID的cookie,或者通过加密后的cookie在服务器端还原回来类似userId等字段实现自动登录等
乱弹:session有的时候也可以不用借助cookie,使用url argument也可以完成
常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。
点评:session与cookie的生命周期都是由服务器端控制,不同的是session是到期后由服务器删除,cookie到期后由浏览器删除

常见误区3:会话cookie即session,持久cookie即cookie。
真相:很多会话cookie并没有用到JSessionId这种服务端动态生成的机制,也就是说你每次登录进去,cookie都是一模一样的值,但是人家偏偏就是会话cookie。单凭cookie的生效时间、过期时间来判断,是不够的,要看服务端的实现原理。
点评:同意!

 

 

关于SESSION使用URL重写这种实现方式,在tomcat7的源码里作者写了如下一句话:

Do not reuse the session id if it is from a URL, to prevent possible phishing attacks

 我觉得作者挺好玩,具体看我这文章

0 请登录后投票
   发表时间:2014-01-17  
擦,架构师威武啊。。。
0 请登录后投票
   发表时间:2014-01-17  
我就不想再说什么了,亲,你能试试这个场景么,关闭你浏览器端的cookie,然后登录: 假设登陆后在服务端生成session_id,然后在后续的请求中url上一直带着这个session_id 你看你的程序还能走的通么,... 如果能走通,亲,你所说的这些是否可以不算成立呢
0 请登录后投票
   发表时间:2014-01-17  
常见误区2:只要关闭浏览器,session就消失了,而cookie不会消失
真相:正好说反了,只有cookie才会因为浏览器的关闭而消失,session是不会因为浏览器的关闭而消失的,服务端session一般是定期清理,一段时间不用会被删掉。
点评:session与cookie的生命周期都是由服务器端控制,不同的是session是到期后由服务器删除,cookie到期后由浏览器删除

---------
亲,难道你用js在前端就不能创建和销毁 cookie了?
0 请登录后投票
   发表时间:2014-01-17  
不能说没区别吧。 还是很大的。
但是相辅相成的。
0 请登录后投票
   发表时间:2014-01-18  
仅仅是因为cookie带了sessoinid而已,sessionid是一个唯一的key。通过sessionid才能在服务器上找到对应的session信息。cookie是存在客户端的而seesion内容是存在于服务器内存或缓存文件中的。至于关闭浏览器session失效?有本事你带着未过期的sessionid再试试?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics