文档介绍:HTTP 协议中 session 与 cookie 的联系与区别 HTTP 协议中 session 与 cookie 的联系与区别具体来说 cookie 机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制, 他需要用户打开客户端的 cookie 支持。 cookie 的作用就是为了解决 HTTP 协议无状态的缺陷所作的努力. 而 session 机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到, 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以 session 机制可能需要借助于 cooki e 机制来达到保存标识的目的。而 session 提供了方便管理全局变量的方式 session 是针对每一个用户的,变量的值保存在服务器上,用一个 sessionID 来区分是哪个用户 session 变量, 这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用 cookie 时,这个值也可能设置为由 get 来返回给服务器。就安全性来说:当你访问一个使用 session 的站点,同时在自己机子上建立一个 cookie , 建议在服务器端的 SESSION 。正统的 cookie 分发是通过扩展 HTTP 协议来实现的,服务器通过在 HTTP 的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的 cookie 从网络服务器观点看所有 HTTP 请求都独立于先前请求。就是说每一个 HTTP 响应完全依赖于相应请求中包含的信息状态管理机制克服了 HTTP 的一些限制并允许网络客户端及服务器端维护请求间的关系。在这种关系维持的期间叫做会话(session) 。 Cookie s 是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。 IETF RFC 2965 HTTP State Management Mechanism 是通用 cookie 规范。网络服务器用 HTTP 头向客户端发送 cookies , 在客户终端,浏览器解析这些 cookies 并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些 cookies ----------------------------------------------------------- ----------------------------------------------------------- --------------------------------------------- 理解 session 机制 session 机制是一种服务器端的机制, 服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个 session 的时候, 服务器首先检查这个客户端的请求里是否已包含了一个 session 标识- 称为 session id ,如果已包含一个 session id 则说明以前已经为此客户端创建过 session ,服务器就按照 session id 把这个 session 检索出来使用( 如果检索不到, 可能会新建一个), 如果客户端请求不包含 session id ,则为此客户端创建一个 session