cookie
cookie是临时文件的意思,保存你浏览页面的痕迹,使得再次访问上一次的页面的时候提高网速,判断你是否登陆过这个网站,有些可以帮助你自动登陆
cookie就是服务器暂存在你的电脑里的资料,通过在HTTP传输中的状态,好让服务器来辨别你的计算机。当你浏览网站的时候,web服务器会先送一小小的资料放在你的计算机上,会帮你在网站上所打的文字或者一些选择记录下来。当下次访问同一个网站的时候,web服务器会先看看有没有它上次留下的cookie资料。,有的话,就会依据cookie里的内容来判断使用者,送出特定的网页内容给你。
Cookie 是由 HTTP 服务器设置的,保存在浏览器中,但 HTTP 协议是一种无状态协议,在数 据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们 去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们 办了积分卡之后,超市就有了我们的消费信息。cookie 就像是积分卡,可以保存积分,商品就是我 们的信息,超市的系统就像服务器后台,http 协议就是交易的过程。
cookie和session的区别
- cookie数据存放在客户的浏览器上,session数据放在服务器上
- cookie不是很安全,别人可以分析存放在本地的cookie,并运行cookie欺骗,考虑到安全应当使用session
- session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能。考虑到减轻服务器性能方面,应当使用cookie
- 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
- 建议:将登陆信息等重要信息存放在session,其他信息如果需要保留,可以放在cookie中
Session 依赖于 Cookie,如果浏览器不能保存 cookie 那么 session 就失效了。因为它需要浏览 器的 cookie 值去 session 里做对比。session 就是用来在服务器端保存用户的会话状态。
cookie 可以有过期时间,这样浏览器就知道什么时候可以删除 cookie 了。 如果 cookie 没有设 置过期时间,当用户关闭浏览器的时候,cookie 就自动过期了。你可以改变 SESSION_EXPIRE_AT_BROWSER_CLOSE 的设置来控制 session 框架的这一行为。缺省情况下, SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 False ,这样,会话 cookie 可以在用户浏览器中保 持有效达 SESSION_COOKIE_AGE 秒(缺省设置是两周,即 1,209,600 秒)
cookie的工作原理
1. 创建cookie
1)用户第一次浏览某个使用cookie的网站时,生成一个唯一的识别码,创建一个cookie对象
2.)默认情况下,cookie存储在浏览器的内存中,用户退出浏览器后被删除。
3)将cookie放在HTTP响应报头,将cookie插入到一个set-cookie HTTP请求报头中。
4)发送该HTTP响应报文
2. 设置存储cookie
浏览器接收到响应报文后,根据保温里面的set-cookie特殊指示,生成相应的cookie,保存在客户端,该cookie中保存着用户当前的信息。
3. 发送cookie
用户再次访问该网站的时候,浏览器首先检查所有存储的cookie,如果某个存在该网站的cookie,则把该cookie负载请求资源的HTTP请求头上发送给服务器
4. 读取cookie
服务器接收到用户的HTTP请求后,从报文头获取到该用户的cookie,从里面找到所需要的东西。
cookie和session的理解,它们可以单独使用吗?
cookie采用的是客户端保持状态的方案,session采用的是服务器端保持状态的方案
如果禁用cookie就不能得到session。因为session使用sessionID来确定当前对话所对应的服务器,而sessionID是通过cookie来传递的,禁用cookie相当于失去了sessionID,就得不到session
cookie过期的处理问题
因为cookie存在过期的现象,一个很好的处理方法就是做一个异常类,如果有异常的话cookie抛出异常类在执行程序
说明 Session 和 Cookie 的联系
Session 对 Cookie 的依赖:Cookie 采用客户端存储,Session 采用的服务端存储的机制。Se ssion 是针对每个用户(浏览器端)的,Session 值保存在服务器上,通过 SessionId 来区分哪个用 户的 Session。因此 SessionId 需要被绑定在浏览器端。SessionId 通常会默认通过 Cookie 在浏览器端绑定,当浏览器端禁用 cookie 时,可通过 Url 重写(可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6 之类的字符串)或者表单隐藏字段的方式将 SessionId 传回给服务器,以便服务通 过 SessionId 获取客户端对应的 Session。
具体一次的请求流程:当程序需要为客户端创建一个 Session 的时候,服务器首先检测这个客 户端请求里面是否已经包含了 Session 的表示(SessionId),如果已经包含,则说明已经为客户端 创建过一个 Session,服务端根据 SessionId 检索出来 Sesion 并使用。如果客户端请求不包含 SessionId,则为客户端创建一个 Session,并生成一个 SessionId 返回给客户端保存。