您的位置:首页 > 其它

session和cookie简单概念

2016-07-20 17:46 169 查看
众所周知,目前流行的B/S结构是通过http来进行交互的,但是http是无状态的协议,服务器无法知道这个请求是谁发来的,做个最通俗的例子吧,A将一件商品加入了购物车,之后又加了一件,但是这是两次http请求,服务器不知道应该将两件商品加入同一个,也就是说A的购物车。所以我们需要进行会话跟踪。

目前我们使用会话跟踪有两种方式,一种是Cookie,一种是Session,简单点来说:
Cookie是存储在客户端的(通常也就是说浏览器),Cookie是由服务器端通过http响应头中加入一行特殊的指令让浏览器生成Cookie,之后浏览器每次访问服务器都会带上Cookie,服务器就可以通过Cookie来跟踪会话。(这只是简单的原理,实际还是比较复杂的)
Session是存储在服务端的,Session一般由服务器自动生成,然后每个请求用户都会有一个唯一的Id,这个Id一般会设置成一个Cookie(名为JSESSIONID),发送给浏览器,但是Cookie并不是所有浏览器都支持,或者浏览器关闭了Cookie功能,这时seesionId就会通过url重写的方式传送给服务器。

至于使用场景,由于Cookie在每次请求的时候都会带上,所以如果信息过多的话,会造成大量的带宽,而且因为Cookie是存储在浏览器本地的,所以从安全性角度来说,也不是很安全的。
Session是存储在服务器端的,所以当用户量非常大的时候,是非常占内存的,(当然了,现在这也不是事了,毕竟内存也便宜),当用户量大的时候,服务端必然是一个集群,那么session总不能存在每个节点中的内存中吧,这样就会导致session不共享,可能我登录时session保存在A节点,我另一个操作被分配到B节点了,那就找不到相应的session了。所以,一般是单独拿出一个缓存服务器存放session,然后所有节点共享session。

至于怎么样是最佳使用方案,目前我也不知道,毕竟技术有限,以后会慢慢去了解的。至于一些具体的cookie,session怎么使用,一些参数什么的,本文就不多介绍了,之后可能会转载一些其他人的介绍。


这里有个稍微详细点的介绍:

http://blog.csdn.net/fangaoxin/article/details/6952954
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session cookie 服务器