企业网站建设

建站知识

今日已发布信息: 319361
累计注册用户: 70477686

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

今日推荐知识库
冷笑话脑筋急转弯
脑筋急转弯:如果你向游泳池里扔一块石头,会发生什么现象呢?     答案:罚款十元
语录
一心一意我想你,两情相悦甜如蜜,三世情缘创奇迹,四时充美人欢喜,五福临门笑口开,六六大顺吉祥意,七夕之恋亲亲你:七夕夜一起看月亮吧?
经典语录
每个人心中都有一个秘室,这个秘室里堆积了许多陈旧的东西,需要不断清理出来,只有不断清除空间,才能容纳新的东西进去。这些东西堆久了会发烂发臭的。我就好比一匹桀骜不驯的野马,当所有人都无法驱使我的时候,我只有自己驱使自己,做自己的导演!
小学作文
今天我吃完晚饭就去书房打开电脑想写日记,等妈妈还没过来就出去看,原来妈妈洗好碗在地板,我想妈妈快点就主动帮忙,可是越帮越忙,我想把书房里地板擦下,我推下椅子就碰到书柜门了,以为门是玻璃做的,被椅子一推玻璃开花了,唉!真是帮倒忙了,看妈妈有点不高兴,爸爸说没关系。
送别诗
君平曾卖卜,卜肆芜已久。至今杖头钱,时时地上有。不知支机石,还在人间否。