企业网站建设

建站知识

今日已发布信息: 416174
累计注册用户: 75575114

HTTP协议--cookie、session、缓存与代理

用来实现 在服务器

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

1 Cookie和 Session

Cookie和 Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决 HTTP无状态的问题而所做的努力。

Session可以用 Cookie来实现,也可以用 URL回写的机制来实现。用 Cookie来实现的 Session可以认为是对 Cookie更高级的应用。

1.1 两者比较

Cookie和 Session有以下明显的不同点:

1) Cookie将状态保存在客户端, Session将状态保存在服务器端;

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

3) Session是针对每一个用户的,变量的值保存在服务器上,用一个 sessionID来区分是哪个用户 session变量 ,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用 cookie时,这个值也可能设置为由 get来返回给服务器;

4)就安全性来说:当你访问一个使用 session 的站点,同时在自己机子上建立一个 cookie,建议在服务器端的 SESSION机制更安全些 .因为它不会任意读取客户存储的信息。

1.2 Session 机制

Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

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

 

  无锡免费做网站  婚纱摄影   今日推荐免费建站   分类信息   巢湖网站建设公司

 

1.3 Session 的实现方式1.3 .1   使用 Cookie 来实现

服务器给每个 Session分配一个唯一的 JSESSIONID, 并通过 Cookie发送给客户端。

当客户端发起新的请求的时候,将在 Cookie头中携带这个 JSESSIONID。这样服务器能够找到这个客户端对应的 Session。

流程如下图所示:
     

1.3 .2   使用 URL 回显来实现

URL回写是指服务器在发送给浏览器页面的所有链接中都携带 JSESSIONID的参数,这样客户端点击任何一个链接都会把 JSESSIONID带会服务器。

如果直接在浏览器输入服务端资源的 url来请求该资源,那么 Session是匹配不到的。

Tomcat对 Session的实现,是一开始同时使用 Cookie和 URL回写机制,如果发现客户端支持 Cookie,就继续使用 Cookie,停止使用 URL回写。如果发现 Cookie被禁用,就一直使用 URL回写。 jsp开发处理到 Session的时候,对页面中的链接记得使用 response.encodeURL() 。

1.3.3 与 Cookie 相关的 HTTP 扩展头

1) Cookie : 客户端将服务器设置的 Cookie返回到服务器 ;

2) Set-Cookie : 服务器向客户端设置 Cookie;

3) Cookie2 (RFC2965)): 客户端指示服务器支持 Cookie的版本 ;

4) Set-Cookie2 (RFC2965): 服务器向客户端设置 Cookie。

1.3.4 Cookie 的流程

服务器在响应消息中用 Set-Cookie头将 Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在 Cookie头中发送给服务器。从而实现会话的保持。

流程如下图所示:
 

2 缓存的实现原理2.1 什么是 Web 缓存

WEB缓存 (cache)位于 Web服务器和客户端之间。

缓存会根据请求保存输出内容的副本,例如 html页面, 图片,文件,当下一个请求来到的时候:如果是相同的 URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。

HTTP协议定义了相关的消息头来使 WEB缓存尽可能好的工作。

2.2 缓存的优点

q      减少相应延迟 :因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让 web服务器看上去相应更快。

q      减少网络带宽消耗 :当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

2.3 与缓存相关的 HTTP 扩展消息头

q      Expires :指示响应内容过期的时间,格林威治时间 GMT

q      Cache-Control :更细致的控制缓存的内容

q      Last-Modified :响应中资源最后一次修改的时间

http://www.kvov.com.cn/jzxx32930.html

今日推荐知识库
语录
浮华一生,淡忘一季。空有回忆,打乱缠绵。弦,思华年。年华如梦,一去不返。不泣离别,不诉衷肠。
字谜大全
谜题:小雨连宵打叶声(打一字)     谜底:液   谜底提示:“小雨”扣“氵”,“宵”扣“夜”,“打叶声”提示“液”的读音。
经典语录
在过去,应该遗忘的地方,有只蝴蝶震动翅膀,一个花瓣偶然飘落。
励志名言
信仰的力量,足以把一个国家凝聚起来。
语录
撑不住的时候,可以大声对自己说“我好累”,但永远不要在心里承认说“我不行”。