Session 和 Cookie

1. HTTP是无状态协议?
  HTTP无状态协议,是指协议对于事务处理没有记忆能力。同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。
  无状态,意味着如果后续处理需要前面的信息,则它必须重传。这样可能导致每次连接传送的数据量增大。但是另一方面,在服务器不需要先前信息时它的应答就较快。
  因此在web应用开发里就出现了保持http状态的技术:一个是cookie技术,另一种是session技术。

2. 什么是Cookie?
  Cookie实际上是一小段的文本信息。
  客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,客户端浏览器会把Cookie保存起来。
  当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
  服务器还可以根据需要修改Cookie的内容。Cookie的内容主要包括:名字,值,过期时间,路径和域。

3. 服务端怎么向客户端颁发Cookie?
  客户端第一次请求服务器的时候,服务器的响应头中会有一个 Set-Cookie: JSESSIONID=0000581f4j5s8Y7fL1gKZ5NpavO:17tvfoc18;。
  Set-Cookie由服务器发送,它包含在响应体的头部中。它用于在客户端创建或更新Cookie。

4. 客户端怎么携带着Cookie访问服务器?
  客户端发送请求时会自动在请求头上添加:Cookie:JSESSIONID=0000581f4j5s8Y7fL1gKZ5NpavO:17tvfoc18;(客户端第一次拿到的SessionID)
  只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

5. 什么是Session?
  客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

6. Session在何时创建?
  在服务器端程序运行的过程中创建的。在Java中是通过调用HttpServletRequest的getSession(true)方法创建的。
  在创建了Session的同时,服务器会为该Session生成唯一的SessionId,而这个SessionId在随后的请求中会被用来重新获得已经创建的Session。
  session的实现机制都是web容器里内部机制。

7. 会话是怎么保持的?
  在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有SessionId。
  当客户端再次发送请求的时候,会将这个SessionId带上,服务器接受到请求之后就会依据SessionId找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。

8. Session在什么时候删除?
  超时;程序调用HttpSession.invalidate();程序关闭;

9. Session存放在哪里?
  一般存放在服务器端的内存中。不过session可以通过特殊的方式做持久化管理(memcache,redis)。

10. Session的id是从哪里来的?
  当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象

11. Session会因为浏览器的关闭而删除吗?
  不会,Session只会通过上面提到的方式去关闭。
  浏览器关闭只是把sessionId给清除了,所以再次打开浏览器并请求服务器,你的登录状态无法找到,因此你需要重新登录。
  一般情况下,浏览器如果不刷新或者不重新请求的话,服务器一般会缓存session数据20分钟左右

时间: 2024-08-16 11:08:15

Session 和 Cookie的相关文章

Session和Cookie的使用总结

转:http://www.cnblogs.com/shuang121/archive/2011/03/02/1968768.html Session和Cookie的使用总结: Session和cookie都是asp.Net中的内置对象,至于他们有什么区别,在这里就不在多说,现在来说说一些比较实用点的东西: 我们知道网站都有一个后台管理系统,其中有登录和退出两个功能,在登录的时候我们往往会把用户的信息保存到session或者cookie中,以便后面使用,那么在登录的时候我们要注意哪些呢? 1.把一

asp.net内置对象session和cookie

1.各个机器的session对象不同,不同浏览器之间不通用(换个浏览器,是个新的session). 2.session状态对象起始于网页打开,终止于网页关闭,生命周期有限. 3.关闭浏览器/超时的情况下,session对象即被销毁,不要放太多/太大的对象在session. 4.Web应用程序在传统意义上无状态,需要使用内置对象进行客户端状态的保存. 5.session对象和Application对象存储在服务端,cookie对象存储在客户端. 6.session对象适用于安全性相比之下较高的场合

Java面试14|Session与Cookie

1.在分布式环境,管理Session通常使用下面三种方式: (1)Session Replication 方式管理 (即session复制) 将一台机器上的Session数据广播复制到集群中其余机器上 使用场景:机器较少,网络流量较小 优点:实现简单.配置较少.当网络中有机器Down掉时不影响用户访问 缺点:广播式复制到其余机器有一定廷时,带来一定网络开销 tomcat自带的基于tcp广播技术的集群 (2)Session Sticky 方式管理 即粘性Session.当用户访问集群中某台机器后,

Session 与 Cookie

Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们本身只是HTTP中的一个配置项,在servlet规范中也只对应一个类而已. 理解 Cookie 通俗地说就是当一个用户通过 HTTP 协议访问一个服务器的时候,这个服务器会将一些 Key/Value 键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器.W3C 在设计 Cookie 时实际上考虑的是为了记录用户在一段时间内访问 Web

Session与Cookie

Session与Cookie的比较 Cookie与Session都可以进行会话跟踪,但是实现的原理不太一样.一般情况下二者均可以满足需求,但有时候不可以使用Cookie,有时候不可以使用Session.下面通过比较说明二者的特点以及适用的场合.  从存取方式上比较 Cookie中只能保存ASCII字符串,如果需要存取Unicode字符或者二进制数据,需要进行UTF-8,GBK或者BASE64等方式的编码.Cookie中也不能直接存取Java对象.若要存储稍微复杂的信息,使用Cookie是比较困难

会话管理-0.2.Session和Cookie的区别

session和cookie的最大区别在于: 1.保存位置不同 session是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面: 2.生命周期不同 session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户(Unique Visitor). 3.安全性不同 cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑

Session,Cookie,jsessionid,Url重写

在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码: < % cookie[]cookies = request.getCookies(); if (cookies.lenght == 0 || cookies == null){ doStuffForNewbie(); //没有访问过 }else{ doStuffForReturnVisitor(); //已经访问过了 } % > 这是很浅显

IIS 7.5 IE 10+ 提交Session,Cookie丢失

这是ASP.NET 2.0,3.5和4.0的Bugs,因这些版本无法识别IE10的User-Agent标头字符串,所以无法识别用户浏览器的版本,从而导至了 ASP.NET的特定功能失效,认为游览器不支持Cookies功能,不处理与Cookie相关的程式码等,从而在浏览器中不保存服务器返回的 Session标识,造成丢失等. 简单的解决方法是,在网站根目录,新增一个浏览器定义文件(browser definition file) 步骤如下: 1.添加一个"App_Browsers"文件夹

第10章 深入理解Session与Cookie

10.1 理解Cookie 10.1.1 Cookie属性项 10.1.2 Cookie如何工作 10.1.3 使用Cookie的限制 10.2 理解Session 10.2.1 Session与Cookie 10.2.2 Session如何工作 10.3 Cookie安全问题 10.4 分布式session框架 10.4.1 存在哪些问题 10.4.2 可以解决哪些问题 10.4.3 总体实现思路 10.5 Cookie压缩 10.6 表单重复提交问题 10.7 多终端Session统一 10

session 与 cookie的区别用法

//设置cookie方法 setcookie("name",'zhangsan'); setcookie("name",'zhangsan',time()+60);//设置cookie有效时间为60秒 //setcookie("visittime",date("y-m-d H:i:s"),time()+60);//设置保存cookie失效时间的变量 //读取cokie方法 $name=$_COOKIE["name&q