HTTP协议之Session和Cookie

那就是说Message Body为HTML
Form里面定义的Input属性。例如,

Cookie:
jsessionid=1001

客户端会把Cookie存放在地面文件里,下四遍访问Web
Server的时候,再把Cookie的消息放到HTTP
Request的“Cookie”header属性里面,那样jsessionid就趁着HTTP
Request重回给Web Server。

 

Dim aCookie As New HttpCookie(“lastVisit”)
aCookie.Value = DateTime.Now.ToString
aCookie.Expires = DateTime.Now.AddDays(1)

(1)URL重写。

如若HTTP
Method是POST,表达这一个HTTP Request是submit一个HTML
Form的结果,

Response.Cookies(“userName”).Value = “mike”
Response.Cookies(“userName”).Expires = DateTime.Now.AddDays(1) 

Response.Cookies.Add(aCookie)  

这一行由HTTP
Method(如GET或POST)、URL、和HTTP版本号组成。

GET http://www.somsite.com/menu.do;jsessionid=1001 HTTP/1.1

 

适度从紧的说,Session和Cookie并不是http协议的一有些。由于HTTP协议陈设规范是无状态的,但是近期出现了种种必要,其中cookie的功用就是为驾驭决HTTP协议无状态的毛病所作出的鼎力。后来面世的session机制则是又一种在客户端与服务器之间保持状态的解决方案。 
具体来说cookie机制选拔的是在客户端保持状态的方案,而session机制接纳的是在劳务器端保持状态的方案。同时大家也看出,由于采纳服务器端保持状态的方案在客户端也亟需保留一个标识,所以session机制可能需求借助cookie机制来达到保存标识的目标,但实在它还有任何选项。 
Session是足以储存针对与某一个用户的浏览器以及通过其眼前窗口打开的其他窗口具有针对性的用户音信存储机制。 

例如,GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

而SESSION就不得以,他不会保留太短时间,而且IE在关闭后就活动清除了SESSIONID记录 

当设置主管KIE的时候,服务器会反馈给客户端浏览器一条响应。浏览器据此生成CEOKIE并存放,在下次访问那么些站点并且首席执行官KIE未失效时得以行使那么些音讯。 
当即使想让用户下次登入网站不必要输入用户名或者密码的时候就只能用CEOKIE,因为他得以保留一定长的时辰(在COOKIE记录被删除或者失效日期此前) 

(2)Request Headers

保存session id的主意得以应用cookie,那样在相互进度中浏览器可以自行的依照规则把那几个标识发挥给服务器。cookie的命有名的模特式接近于SEEESIONID。
偶尔cookie被人为的不准,所以出现了其他编制以便在cookie被明令禁止时还可以把session id传递回服务器

 

下五次,用户访问这些页面中的URL。jsessionid就会传回到Web
Server。

  1. Session的使用
    当浏览网站时,客户端会发出一个下令请求SESSIONID以及对各类门类数据的下载许可,如图片,声音以及FLASH。 
    当为某个客户端的伸手成立一个session的时候,首先检查那一个客户端的请求里是或不是含有一个session标识(sessionid),假如已涵盖则说明从前曾经为此客户端创制过session,服务器就依照session
    id把那几个session检索出来使用。借使客户端请求不含有,则为开创一个session并且生成一个与此session相关联的session
    id,session
    id的值是一个既不会重新,又不便于被找到规律以克隆的字符串。 

password=guest

 

Accept-Language:
en-us

果客户端辅助Cookie,Web Server在回来Response的时候,在Response的Header部分,参与一个“set-cookie: jsessionid=XXXX”header属性,把jsessionid放在Cookie里传到客户端。

http://www.somesite/login.do?user=guest&password=guest&jsessionid=1001

 

Web
Server在回去Response的时候,检查页面中有着的URL,包涵持有的连天,和HTML
Form的Action属性,在这个URL后边加上“;jsessionid=XXX”。

(3)Message Body

GET http://www.google.com/search?q=Tomcat HTTP/1.1

 

那种技术叫做URL重写,就是把session id直接附加在URL路径的末端,附加措施也有二种,一种是用作URL路径的增大音信,表现格局为http://www.wantsoft.com/index.asp;jsessionid=
ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 
另一种是用作查询字符串附加在URL前边,表现格局为http://www.wantsoft.com/index?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 

user=guest

User-Agent: Mozilla/4.0
(compatible; MSIE 5.5; Windows NT 5.0)

POST http://www.google.com/search HTTP/1.1

那部分概念了有些非同儿戏的尾部音信,如,浏览器的连串,语言,类型。Request
Headers中还是可以概括库克ie的概念。例如:

TTP
Request一般由3部分构成:

如果HTTP
Method是GET,那么Message Body为空。

从理论上来说,那3个部分(Request
URL,Cookie Header, Message Body)都能够用来存放Session ID。由于Message
Body方法必须需求一个带有Session ID的HTML
Form,所以这种办法不通用。

一般用来促成Session的不二法门有二种:

  1. COOKIE

 

jsessionid=1001

(1)Request Line

 

数量格式如下:
GET / HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-shockwave-flash, */* 
Accept-Language0: zh-cn 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 
Host:www.wantsoft.com 
Connection: Keep-Alive 

主张,假使把HTML
Form元素的Method属性改为GET。那么,Message
Body为空,所有的Input属性都会加在URL的前边。你在浏览器的URL地址栏中会看到那个属性,类似于