Bootstrap

Cookie和Session的区别和联系

Cookie

Cookie是浏览器的存储机制,在同一台设备中,每个浏览器的Cookie都是分别存储的,每个网站的Cookie在不同的浏览器中也是分开存储的,而Cookie里面的内容是由服务器通过set-cookie字段传递过来的,Cookie里面的内容最终在请求的cookie字段返回给服务器。举例:当浏览器第一次浏览某个网站时,服务器会将所需的Cookie字段传递过去,当该浏览器再次访问此网站时,会将已有的Cookie传递给服务器,如果Cookie的内容不需要更改,服务器就不会再将Cookie进行传递。

Session

Session是服务器的存储机制,它主要是存储用户的登录信息,Session是一个Key-Value的存储结构,它的Key就是用户登录成功后生成的session_id,它的Value则又是一个Key-Value结构,里面存储的是用户的信息,比如:username: xxx ... 。服务器验证用户当前是否为登录状态就是根据请求中传递过来的session_id,若session_id在服务器的Session中存在,并且用户信息也存在,此时就认为该用户是登录状态,若不是登录状态,则需要让用户重新登录,生成session_id并将其存储到Session中,同时session_id是有失效时间的,默认为30分钟(可以通过服务器的配置文件设置session-timeout来修改失效),若超出时限则会失效,需要重新登录。

联系

Cookie和Session在网站登录和登录效验时需要配合使用,相互协作。

当用户进行登录操作时,客户端会将本地存储的Cookie(包含session_id)传递给服务器,服务器通过效验session_id,来判断用户是否为登录状态。

区别

1. Cookie是客户端的存储机制,Session是服务器端的存储机制

2. Cookie里面存储的内容包括但不限于session_id,Session里面存储的只有session_id和用户信息

3. Cookie不被Session限制,在非登录操作时Cookie不与Session关联,Session的工作需要与Cookie关联

;