Cookie和Session

原创 2016年05月30日 15:09:53

Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。 Session可以用Cookie来实现,也可以用URL回写的机制来实现。用Cookie来实现的Session可以认为是对Cookie更高级的应用。

cookie与session的不同

Cookie和Session有以下明显的不同点: 1)Cookie将状态保存在客户端,Session将状态保存在服务器端; 2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定义

Session机制

Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。

Session实现方式


1.1使用Cookie来实现


     服务器给每个Session分配一个唯一的JSESSIONID,并通过Cookie发送给客户端。 当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session。 流程如下图所示


   1.2使用URL回显来实现


 URL回写是指服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,这样客户端点击任何一个链接都会把JSESSIONID带会服务器。 如果直接在浏览器输入服务端资源的url来请求该资源,那么Session是匹配不到的。 Tomcat对Session的实现,是一开始同时使用Cookie和URL回写机制,如果发现客户端支持Cookie,就继续使用Cookie,停止使用URL回写。如果发现Cookie被禁用,就一直使用URL回写。jsp开发处理到Session


Session销毁的方式

Session超时:Session在指定时间内失效,例如30分钟,若在30分钟内没有操作,则Session会失效,例如在web.xml中进行了如下设置: 

1)

 <session-config> 
        <session-timeout>30</session-timeout> //单位:分钟
    </session-config>       

 30 //单位:分钟   

  2)使用session.invalidate()明确的去掉Session。

3)关闭浏览器,session失效。重新请求的时候,服务器端重新生成一个sessionID.

cookie和session

  • 2014年10月16日 14:39
  • 14KB
  • 下载

session与cookie

  • 2015年03月06日 16:21
  • 23KB
  • 下载

cookie 和session 的区别详解

这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些...

session与cookie区别精选

  • 2017年09月12日 10:29
  • 20KB
  • 下载

Cookie&amp;Session;

  • 2017年11月04日 22:10
  • 1.13MB
  • 下载

理解Session和Cookie机制

一、Cookie机制 在web程序中是使用HTTP协议来传输数据的,因为http是无状态协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接,所以无法实现会话跟踪,c...

session和cookie的区别

  • 2014年02月20日 18:49
  • 15KB
  • 下载

如何在requests session中手动设置cookie

最近工作中在使用python requests库时遇到一个问题,就是如何在session中设置对所有请求都生效的cookie?requests中的session对象一大特性就是它会自动为你管理cook...
  • mgxcool
  • mgxcool
  • 2016年09月25日 18:31
  • 5599

cookie与session的区别

  • 2014年06月16日 13:45
  • 19KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cookie和Session
举报原因:
原因补充:

(最多只允许输入30个字)