cookie和session

cookie

cookie是临时文件的意思,保存你浏览页面的痕迹,使得再次访问上一次的页面的时候提高网速,判断你是否登陆过这个网站,有些可以帮助你自动登陆

cookie就是服务器暂存在你的电脑里的资料,通过在HTTP传输中的状态,好让服务器来辨别你的计算机。当你浏览网站的时候,web服务器会先送一小小的资料放在你的计算机上,会帮你在网站上所打的文字或者一些选择记录下来。当下次访问同一个网站的时候,web服务器会先看看有没有它上次留下的cookie资料。,有的话,就会依据cookie里的内容来判断使用者,送出特定的网页内容给你。

Cookie 是由 HTTP 服务器设置的,保存在浏览器中,但 HTTP 协议是一种无状态协议,在数 据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们 去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们 办了积分卡之后,超市就有了我们的消费信息。cookie 就像是积分卡,可以保存积分,商品就是我 们的信息,超市的系统就像服务器后台,http 协议就是交易的过程。

 

cookie和session的区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上
  2. cookie不是很安全,别人可以分析存放在本地的cookie,并运行cookie欺骗,考虑到安全应当使用session
  3. session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能。考虑到减轻服务器性能方面,应当使用cookie
  4. 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
  5. 建议:将登陆信息等重要信息存放在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 返回给客户端保存。

 

 

参考博客: https://www.cnblogs.com/nieliangcai/p/8864791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值