HTTP协议的头信息详解_第1页
HTTP协议的头信息详解_第2页
HTTP协议的头信息详解_第3页
HTTP协议的头信息详解_第4页
HTTP协议的头信息详解_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘录了网上关于这方面的介绍〔HyperTextTransferProtocol〕WWW协议的具体内容请参考RFC2616。/响应模型。客户端向效劳URI息和内容的类似于MIME通常消息包括客户机向效劳器的恳求消息和效劳器向客户机的响应消息的头域包括通用头,恳求头,响应头和实体头四个局部。每个头域由一个域名,冒号〕展为多行,在每行开头处,使用至少一个空格或制表符。通用头域通用头域包含恳求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通介绍几个在UPnPCache-ControlCache-Control指定恳求和响应遵循的缓存机制。在恳求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。恳求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-agePublicPrivate指示对于单个用户的整个或局部响应消息,不能被共享缓存处理。这允许效劳器仅仅描述当用户的局部响应消息,此响应消息对于其他用户的恳求无效。no-cacheno-store都不使用缓存。max-age指示客户机可以接收生存期不大于指定时间〔以秒为单位〕的响应。min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。max-stale指示客户机可以接收超出超时期间的响应消息。假设指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。DateDate头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算本钱地时间,需要知道用户所在的时区。PragmaPragmaPragma:no-cache/1.1中,它的含义和Cache-Control:no-cache恳求消息恳求消息的第一行为下面的格式:MethodSPRequest-URISP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应当被全部的通用WEBGETRequest-URI标识的信息。HEADRequest-URI在响应时,不返回消息体。POST方法可以恳求效劳器接收包含在恳求中的实体信息,可以用于提交表单,向闻组、BBS、邮件群组和数据库发送消息。SPRequest-URI遵循URI〔*〕时,说明恳求并不用于某个特定的资源地址,而是用于效劳器本身。-Version表示支持的/1.1CRLFAcceptAccept-CharsetAccept-Encoding、Accept-LanguageAuthorizationFromHostIf-Modified-SinceIf-MatchIf-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对恳求头域的扩展要求通讯双方都支典型的恳求消息:GET://download.microtool.de:80/somedata.exeHost:download.microtool.deAccept:*/*Pragma:no-cacheCache-Control:no-cacheReferer:“://download.microtool.de/“://download.microtool.de/User-Agent:Mozilla/4.04[en](Win95;I;Nav)Range:bytes=554554-上例第一行表示客户端〔可能是扫瞄器、下载程序〕GET方法获得指定URL下的文件。棕色的局部表示恳求头域的信息,绿色的局部表示通用头局部。HostHost头域指定恳求资源的Inteneturl关的位置。/1.1400RefererReferer头域允许客户端指定恳求uricacheuriuriRefereruri址应当是一个相对地址。RangeRange头域可以恳求实体的一个或者多个子范围。例如,500bytes=0-499500bytes=500-999500bytes=-500500bytes=500-第一个和最终一个字节:bytes=0-0,-1同时指定几个范围:bytes=500-600,601-999GETRange206〔PartialConten〕返回而不是以200〔OK。User-AgentUser-Agent头域的内容包含发出恳求的用户信息。响应消息响应消息的第一行为下面的格式:-VersionSPStatus-CodeSPReason-PhraseCRLF-Version/1.1。Status-CodeReason-PhraseStatus-CodeStatus-Code用于机器自动识别,Reason-PhraseStatus-Code51xx:信息响应类,表示接收到恳求并且连续处理2xx:处理成功响应类,表示动作被成功接收、理解和承受3xx:重定向响应类,为了完成指定的动作,必需承受进一步处理4xx:客户端错误,客户恳求包含语法错误或者是不能正确执行5xx:效劳端错误,效劳器不能正确执行一个正确的恳求响应头域允许效劳器传递不能放在状态行的附加信息,这些域主要描述效劳器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双典型的响应消息:/1.0200OKDate:Mon,31Dec200104:25:57GMTServer:Apache/1.3.14(Unix)Content-type:text/htmlLast-modified:Tue,17Apr200106:46:28GMTEtag:“a030f020ac7c01:1e9f“Content-length:39725426Content-range:bytes554554-40279979/40279980上例第一行表示效劳端响应一个GET的局部表示通用头局部,红色的局部表示实体头域的信息。LocationLocationURIServerServer响应头包含处理恳求的原始效劳器的软件信息。此域能包含多个产品标识和注释,产品标识一般依据重要性排序。实体恳求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括 Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义的实体头但是这些域可能无法未承受方识别实体可以是一个经过编码的字节流,它的编码方式由 Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。Content-TypeContent-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GETContent-RangeContent-Range实体头用于指定整个实体中的一局部的插入位置,他也指示了整个实体的长度。在效劳器向客户返回一个局部响应,它必需描述响应掩盖的范围和整个实体长度。一般格式:Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth500个字节次字段的形式Content-Range:bytes0-499/1234假设一个消息包含此节〔例如,对范围恳求的响应或对一系列范围的重叠恳求Content-Range传送的范围,Content-LengthLast-modified应答头说明Allow效劳器支持哪些恳求方法〔如GET、POST。Content-Encoding文档的编码〔Encode〕方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地削减HTML文档的下载时间。Java的GZIPOutputStream可以很便利地进展gzip压缩,但只有UnixNetscapeWindows的IE4IE5才支持它。因此,Servlet应当通过查看Accept-Encoding头〔request.getHeader(“Accept-Encoding“)〕检查扫瞄器是否支持gzip,为支持gzip的扫瞄器返回经gzipHTMLContent-LengthByteArrayOutputStram,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream发送内容。Content-Type表示后面的文档属于什么MIMEServlet默认为text/plain,但通常需要显式地指定为text/html。由于常常要设置Content-Type,因此ServletResponse供给了一个专用的方法setContentTyep。Date当前的GMT时间。你可以用setDateHeaderExpires应当在什么时候认为文档已经过期,从而不再缓存它?Last-Modified文档的最终改动时间If-Modified-Since期,该恳求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回304〔NotModified〕状态。Last-ModifiedsetDateHeaderLocation表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过ServletResponsesendRedirect302。Refresh表示扫瞄器应当在多少时间之后刷文档,以秒计。除了刷当前文档之外,你还可以通过setHeader(“Refresh“,“5;“://host/path“URL=://host/path“)让扫瞄器读取指定的页面。注意这种功能通常是通过设置HTML页面HEAD区的<META-EQUIV=“Refresh““://host/path“CONTENT=“5;URL=://host/path“>实现,这是由于,自动刷或重定向对于那些不能使CGIServlet的HTMLServletRefresh头更加便利。留意RefreshN秒之后刷本页面或访问指定页面N秒刷本页面或访问指定页面Refresh204Refresh头还是<META-EQUIV=“Refresh“...>。Refresh头不属于1.1Netscape和IE持它。Server效劳器名字。ServletWebSet-Cookie设置和页面关联的Cookie。Servlet不应使用response.setHeader(“Set-Cookie“,ServletResponseaddCookie。参见下文有关CookieWWW-Authenticate客户应当在Authorization401〔Unauthorized〕状态行的应答中这个头是必需的。例如,response.setHeader(“WWW-Authenticate“,“BASICrealm=\“executives\““)。留意Servlet一般不进展这方面的处理,而是让Web面的访问〔.htacces。〔一〕初识但凡搞WEB〔超文本传输协议HTML还有一局部不行无视的就是做过Socket/传输的消息包都分为必需的。每当我们翻开一个网页,在上面点击右键,选择“查看源文件HTML代码就是的消息体,那么消息头又在哪呢?IE扫瞄器不让我们看到这局部,但我们可以通过截取数据包等方法看到它。下面就来看一个简洁的例子:首先制作一个格外简洁的网页,它的内容只有一行:<html><body>helloworld</body></html>把它放到WEBIISIE〔://localhost:8080/simple.ht工作:解析我们输入的地址,从中分解出协议名、主机名、端口、对象路径等局部,对于我们的这个地址,解析得到的结果如下:协议名:主机名:localhost端口:8080对象路径:/simple.htm把以上局部结合本机自己的信息,封装成一个恳求数据包使用TCP协议连接到主机的指定端口localhost,808,并发送已封装好的数据包等待效劳器返回数据,并解析返回数据,最终显示出来由截取到的数据包我们不难觉察扫瞄器生成的数据包的内容如下:GET/simple.htm/1.1<CR>Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash, application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*<CR>Accept-Language:zh-cn<CR>Accept-Encoding:gzip,deflate<CR>User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)<CR>Host:localhost:8080<CR>Connection:Keep-Alive<CR><CR><CR这个空行正是个恳求数据包是没有消息体的。消息的第一行“GET动作,其他可能的还有“POST”等,GET的消息没有消息体,而POST消息是有消息体的,消息体的内容就是要POST的数据。后面/simple.htm1.1表示使用的是1.1其次行表示我们所用的扫瞄器能承受的Content-type行显示出本机的相关系信息,包括扫瞄器类型、操作系统信息等,很多网站可以显示出你所使用的扫瞄器和操作系统版本,就是由于可以从这里猎取到这些信息。Keep-Alive马上关闭连接。效劳器接收到这样的数据包以后会依据其内容做相应的处理“/simple.htm”这个对象,假设有,依据效劳器的设置来打算如何处理,假设是HTM,则不需要什么简单的处理,直接返回其内容即可。但在直接返回之前,还需要加上效劳器发回的完整/1.1200OK<CR>Server:Microsoft-IIS/5.1<CR>X-Powered-By:ASP.NET<CR>Date:Fri,03Mar200606:34:03GMT<CR>Content-Type:text/html<CR>Accept-Ranges:bytes<CR>Last-Modified:Fri,03Mar200606:33:18GMT<CR>ETag:“5ca4f75b8c3ec61:9ee“<CR>Content-Length:37<CR><CR><html><body>helloworld</body></html>同样,我用“<CR>”来表示回车。可以看到,这个消息也是用空行切分成消息头和消息体两局部,消息体的局部正是我们前面写好的HTML消息头第一行“/1.1200OK200404500403能扫瞄名目等等。其次行表示这个效劳器使用的WEBIIS5.1ASP.Net附加提示,没什么实际用处。第四行是处理此恳求的时间。第五行就是所返回的消息的content-typetext/html,那么扫瞄器就会启用HTMLimage/jpegJPEG器来处理。消息头最终一行“Content-Length”表示消息体的长度,从空行以后的内容算起,以字节为单位,扫瞄器接收到它所指定的字节数的内容以后就会认为这个消息已经被完整接收了。?常见的在效劳器返回的/1.1200O200是规定的返回代码,表示恳求已经被正常处理完成。扫瞄器通过这个返回代码就可以知道效劳器对所发恳求的处理状况是什么,每一种返回代码都有自己的含义。这里列举几种常见的返回码。403AccessForbidden假设我们试图恳求效劳器上一个文件夹,而在WEB效劳器上这个文件夹并没有允许对这个文件夹列名目的话,就会返回这个代码。一个完整的403回复可能是这样的IIS5.〕/1.1403AccessForbiddenServer:Microsoft-IIS/5.1Date:Mon,06Mar200608:57:39GMTConnection:closeContent-Type:text/htmlContent-Length:172?<html><head><title>DirectoryListingDenied</title></head><body><h1>DirectoryListingDenied</h1>ThisVirtualDirectorydoesnotallowcontentstobelisted.</body></html>404Objectnotfound当我们恳求的对象在效劳器上并不存在时,就会给出这个返回代码,这可能也是最常见的错误代码了。IIS给出的404消息内容很长,除了消息头以外还有一个完整的说明“为什么会这样”的网页。APACHE404/1.1404NotFoundDate:Mon,06Mar200609:03:14GMTServer:Apache/2.0.55(Unix)PHP/5.0.5Content-Length:291Keep-Alive:timeout=15,max=100Connection:Keep-AliveContent-Type:text/html;charset=iso-8859-1?<!DOCTYPEHTMLPUBLIC“-//IETF//DTDHTML2.0//EN“><html><head><title>404NotFound</title></head><body><h1>NotFound</h1><p>TherequestedURL/notexistwasnotfoundonthisserver.</p><hr><address>Apache/2.0.55(Unix)PHP/5.0.5ServeratlocalhostPort8080</address></body></html>或许你会问,无论是404还是200,都会在消息体内给出一个说明网页,那么对于客户端来说二者有什么区分呢?一个比较明显的区分在于200是成功恳求以便下次再访问时可以自动提示该地址,而404是失败恳求,扫瞄器只会显示出返回的页面内容,并不会记录此地址,要再次访问时还需要输入完整的地址。401AccessDenied当WEB/个返回代码。在IIS中,设置IIS的安全属性为不允许匿名访问,此时直接访问的话就会得到以下返回结果:/1.1401AccessDeniedServer:Microsoft-IIS/5.1Date:Mon,06Mar200609:15:55GMTWWW-Authenticate:NegotiateWWW-Authenticate:NTLMConnection:closeContent-Length:3964Content-Type:text/html?<!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML3.2Final//EN“><htmldir=ltr>„„此时扫瞄器上让我们输入用户名和密码:localhost来访问本机的IIS,IE401当我们在输入了用户名和密码以后,效劳器与客户端会再进展两次对话。首先客户端向效劳BASE64〔编码局部已经做了处理:GET//1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash, application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:5:8080Connection:Keep-AliveAuthorization:NegotiateABCDEFG„„?/1.1401AccessDeniedServer:Microsoft-IIS/5.1Date:Mon,06Mar200609:20:53GMTWWW-Authenticate:NegotiateHIJKLMN„„Content-Length:3715Content-Type:text/html?<!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML3.2Final//EN“><htmldir=ltr>„„客户端拿到公钥之后使用公钥对用户名和密码进展加密码,然后把加密以后的结果重发给效劳器:GET//1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash, application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:5:8080Connection:Keep-Alive这样,假设验证通过,效劳器端就会把恳求的内容发送过来了,也就是说制止匿名访问的网站会经过三次恳求才可以看到页面。但由于客户端扫瞄器已经缓存了公钥,用同一个扫瞄器窗口再次恳求这个网站上的其它页面时就可以直接发送验证信息,从而一次交互就可以完成了。302ObjectMovedASP的人都知道ASP中页面重定向至少有RedirectTransfer于RedirectTransfer消息头实现的呢?先来看一下TransferASP1.asp<%Server.Transfer“1.htm“%>HTML1.htm<p>thisis1.htm</p>1.asp,发送的恳求是:GET/1.asp/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:localhost:8080Connection:Keep-AliveCookie:ASPSESSIONIDACCTRTTT=PKKDJOPBAKMAMBNANIPIFDAP留意恳求的文件确实是1.asp,而得到的回应则是:/1.1200OKServer:Microsoft-IIS/5.1Date:Mon,06Mar200612:52:44GMTX-Powered-By:ASP.NETContent-Length:20Content-Type:text/htmlCache-control:private?<p>thisis1.htm</p>不难看出,通过Server.Transfer语句效劳器端已经做了页面重定向,而客户端对此一无所1.asp1.asp<%Response.Redirect“1.htm“%>再次恳求1.asp,发送的恳求没有变化,得到的回应却变成了:/1.1302ObjectmovedServer:Microsoft-IIS/5.1Date:Mon,06Mar200612:55:57GMTX-Powered-By:ASP.NETLocation:1.htmContent-Length:121Content-Type:text/htmlCache-control:private?<head><title>Objectmoved</title></head><body><h1>ObjectMoved</h1>Thisobjectmaybefound<aHREF=““>here</a>.</body>200302LocationGET/1.htm/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:localhost:8080Connection:Keep-AliveIf-Modified-Since:Thu,02Mar200606:50:13GMTIf-None-Match:“b224758ec53dc61:9f0“Cookie:ASPSESSIONIDACCTRTTT=PKKDJOPBAKMAMBNANIPIFDAP/1.1200OKServer:Microsoft-IIS/5.1X-Powered-By:ASP.NETDate:Mon,06Mar200612:55:57GMTContent-Type:text/htmlAccept-Ranges:bytesLast-Modified:Mon,06Mar200612:52:32GMTETag:“76d85bd51c41c61:9f0“Content-Length:20?<p>thisis1.htm</p>很明显,两种重定向方式虽然看上去结果很像,但在实现原理上有很大的不同。500InternalServerError500ASP<%if%>明显这个程序并不完整,于是得到的结果为:/1.1500InternalServerErrorServer:Microsoft-IIS/5.1Date:Mon,06Mar200612:58:55GMTX-Powered-By:ASP.NETContent-Length:4301Content-Type:text/htmlExpires:Mon,06Mar200612:58:55GMTSet-Cookie:ASPSESSIONIDACCTRTTT=ALKDJOPBPPKNPCNOEPCNOOPD;path=/Cache-control:private<!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML3.2Final//EN“><htmldir=ltr>„„500号错误,并且后面通过HTML〔三〕〔三〕客户端发送的内容这一次主要来观看消息头中客户端的恳求,从中找到一些有意思的内容。?_REFERER写两个简洁的网页:a.htm:<ahref=b.htm>tob</a>b.htm:haha内容很简洁,就是网页AB的链接。把它们放到IISA,从中再点击到BB“hahBA“://localhost/a.htm“Referer:://localhost/a.htm这一行就表示,用户要访问的B页是从A页链接过来的。效劳器端要想取得这个值也是很简洁的,以ASP为例,只需要写一句<%=Request.ServerVariables(“_REFERER“)%>就可以了。一些网站通过_REFERER直接从扫瞄器上打URL或从其他页面链接过来,这样可以从肯定程度上防止网页被做非法使消息头就可以了,其他常用的手段还有通过HOSTS除了超链接以外,还有其他几种方式会导致_REFERER信息被发送,如:内联框架:<iframesrc=b.asp></iframe>框架集:<frameset><framesrc=b.asp></frameset>表单提交:<formaction=b.asp><inputtype=submit></form>SCRIPT<scriptsrc=b.asp></script>CSS<linkrel=stylesheettype=text/csshref=b.asp>XML<xmlsrc=b.asp></xml>而以下形式不会发送_REFERER:script<script>location.href=“b.asp“</script>script开窗口:<script>window.open(“b.asp“);</script>META<meta-equiv=“refresh“content=“0;URL=b.asp“>引入图片:<imgsrc=b.asp>?COOKIECOOKIE能连续保存。那么客户端与效劳器端是如何交换COOKIE信息的呢?没错,也是通过消息头。首先写一个简洁的ASP网页:<%Dimii=?Request.Cookies(“key“)Response.WriteiResponse.Cookies(“key“)=“haha“Response.Cookies(“key“).Expires=#2007-1-1#%>第一次访问此网页时,屏幕上一片白,其次次访问时,则会显示出hah难觉察,屏幕上显示的内容实际上是COOKIE的内容,而第一次访问时还没有设置COOKIE的消息头应当是什么样的呢?第一次恳求时没什么不同,略过第一次返回时消息内容多了下面这一行:Set-Cookie:key=haha;expires=Sun,31-Dec-200616:00:00GMT;path=/key=hahake”的COOKIEhahCOOKIE的过期时间,由于我用的中文操作系统的时区是东八区,2007110点对应的GMT2006123116其次次再访问此网页时,发送的内容多了如下一行:Cookie:key=haha它的内容就是刚刚设的COOKIE的内容。可见,客户端在从效劳器端得到COOKIE值以后就保存在硬盘上,再次访问时就会把它发送到效劳器。发送时并没有发送过期时间,由于效劳器对过期时间并不关心,当COOKIE假设使用IE6.0扫瞄器并且禁用COOKIE功能,可以觉察效劳器端的set-cookie但客户端并不会承受它,也不会发送它。有些网站,特别是在线投票网站通过记录COOKIEIE6扫瞄器并禁用COOKIE过COOKIE哄骗,固然用HOSTS?SESSION持连接是1.1Connection:Keep-Alive表示客户端扫瞄器支持保持连接的工作方式,但这个连接也会在一段时间没有恳求后自动断开,以节约效劳器资源。为了在效劳器端维持用户状态,SESSION就被制造出来了,现在各主流的动态网页制做工具都支持SESSIONASP为例。当用户恳求一个ASPSet-Cookie:ASPSESSIONIDCSQCRTBS=KOIPGIMBCOCBFMOBENDCAKDP;path=/COOKIESESSIONID“KOIPGIMBCOCBFMOBENDCAKDSESSIONIDCOOKIEIDASP“session(“name“)=useCOOKIE这表示这是一个当关闭扫瞄器时马上过期的COOKIE比单纯用COOKIE一的信息就是SESSIONIDID期间或关闭扫瞄器后很短时间内知道此ID的值,才能做一些哄骗活动。由于效劳器端推断SESSION过期的方式并不是断开连接或关闭扫瞄器,而是通过用户手工完毕SESSION或等待超时,当用户关闭扫瞄器后的一段时间里SESSION还没有超时,所以这时假设知道了刚刚的SESSIONID,还是可以哄骗的。因此最安全的方法还是在离开网站之前手工完毕SESSION,很多网站都供给“Logout”功能,它会通过设置SESSION中的值为已退出状态或让SESSION过期从而起到安全的目的。SESSION和COOKIESESSION过期时间短,假设用过在超过过期时间里没有向效劳器发送任何信息,就会被认为超过过期了;COOKIE则相反,依据效劳器端设置的超时时间,可以长时间保存信息,即使关机再开机也可能保存状态,而安全性自然大打折扣。很多网站都供给两种验证方式相结合,假设用户COOKIE;假设用户使用的是自COOKIE,以后访问时就不需要重输入用户名和密码了。?POST扫瞄器访问效劳器常用的方式有GETPOSTGET体,也就是除了要GET的根本信息之外不向效劳器供给其他信息,网页表单〔FROM〕的默认提交方式就是用GET方式,它会把全部向效劳器提交的信息都作为URL后面的参数,如a.asp?a=1&b=2这样的方式。而当要提交的数据量很大,或者所提交内容不期望别人直接看到时,应当使用POSTPOST方式提交的数据是作为网页表单:<formmethod=post><inputtype=textname=text1><inputtype=submit></form>hahPOST/form.asp/1.1Accept:*/*Referer:://localhost:8080/form.aspAccept-Language:zh-cnContent-Type:application/x-www-form-urlencodedAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0;InfoPath.1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:localhost:8080Content-Length:10Connection:Keep-AliveCache-Control:no-cacheCookie:key=haha;ASPSESSIONIDCSQCRTBS=LOIPGIMBLMNOGCOBOMPJBOKPtext1=haha前面关键字从“GET”变为了“POST”,Content-Type变成了application/x-www-form-urlencoded”,后面内容并无大变化,只是多了一行:Content-Length:10,表示提交的内容的长度。空行后面是消息体,内容就是表单中所填的内容。留意此时发送的内容只是“Name=Value”的形式,表单上其他的信息不会被发送,所listboxlistitemscriptitem假设是用表单上传文件,状况就要简单一些了,首先是表单声明中要加上一句话:enctype='multipart/form-data',表示这个表单将提交多段数据,并用HTML:inputtype=file表单内容如下:<formmethod=postenctype='multipart/form-data'><inputtype=textname=text1><inputtype=filename=file1><inputtype=submit></form>我们为text1heh,为file1选择文件haha.txABCDEF交此表单。提交的完全信息为:POST/form.asp/1.1Accept:*/*Referer:://localhost:8080/form.aspAccept-Language:zh-cnContent-Type: multipart/form-data;boundary= 7d62bf2f9066cAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0;InfoPath.1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:localhost:8080Content-Length:337Connection:Keep-AliveCache-Control:no-cacheCookie:key=haha;ASPSESSIONIDCSQCRTBS=LOIPGIMBLMNOGCOBOMPJBOKP-----------------------------7d62bf2f9066cContent-Disposition:form-data;name=“text1“hehe-----------------------------7d62bf2f9066cContent-Disposition: form-data; name=“file1“; filename=“H:\Documents andSettings\Administrator\桌面\haha.txt“Content-Type:text/plainABCDEFG-----------------------------7d62bf2f9066c--?Content-Typemultipart/form-datboundaryPOST的内容的区段用的,只要在内容中遇到了此值,就表示下面要开头一个的区段了,每个区段的内容相对独立。假设遇到的是此值后每段都有自己的类型和相关信息。如第一区段是text1的值,它的名称是“text1file”和此文件在用户磁盘上的位置,后面就是文件的内容。假设我们想要自己写一个上传文件组件来接收HTML表单传送的文件数据就是解析此数据包,从中取得需要的信息。???〔四〕效劳器返回的消息效劳器返回的消息也分为消息头和消息体两局部消息中常见返回代码的含义。对于非正常的返回代码的处理比较简洁,只要照着要求去做就好了,而对于正常的返回代码200,其处理方式就多种多样了。Content-TypeContent-Type是返回消息中格外重要的内容,它标识出这个返回内容的类型,其值为“主类型/子类型”的格式,例如最常见的就是text/html,它的意思是说返回的内容是文本类型,这个文本又是HTML格式的。原则上扫瞄器会依据Content-Type体内容。常见的内容类型有:text/htmlHTMLimage/jpegJPGimage/gifGIFapplication/xmlXMLaudio/x-mpegurlMP3Winamp,则可以直接把它当面M3U更多的内容类型可以在注册表“HKCR\MIME\Database\ContentType”下看到IE6Content-TypeJPGGIF等常用图片格式都可以正确的识别出来,而不管Content-Type假设Content-Type中指定的是扫瞄器可以直接翻开的类型显示出来,假设是被关联到其它应用程序的类型,这时就要查找注册表中关于这种类型的注册状况,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论