常见的HTTP返回码上一篇文章里我简要的说了说HTTP消息头的格式,注意到在服务器(Server)返回的HTTP消息头里有一个 “HTTP/I.1 200 OK”,这里面的200是HTTP规定的返回代码,表示请求已经被正常处理完成.浏览器通过这一个返回代码就可以知道服务器(Server)对所发请求的处理情况是什么,每一种返回代码都有自己的含义.这里列举几种常见的返回码.1 403 Access Forbidden如果我们试图请求服务器(Server)上一个文件夹,而不能是在WEB服务器(Server)上这一个文件夹并没有允许对这一个文件夹列目录的话,就会返回这一个代码.一个完整的403回复可能是这样的:(IISV.1)HTTP/I.1 403 Access ForbiddenServer: Microsoft-IIS/V.1Date: Mon, 06 Mar 2006 08:57:39 GMTConnection: closeContent-Type: text/htmlContent-Length: 172 Directory Listing DeniedThis Virtual Directory does not allow contents to be listed.2 404 Object not found当我们请求的对像在服务器(Server)上并不存在时,就会给出这一个返回代码,这可能也是最常见的错误代码了.IIS给出的404消息内容很长,除了消息头以外还有一个完整的说明“为什么或者说怎么会会这样”的网页.APACHE服务器(Server)的404消息比较简短,如下:HTTP/I.1 404 Not FoundDate: Mon, 06 Mar 2006 09:03:14 GMTServer: Apache/II.0.55 (Unix) PHP/V.0.5Content-Length: 291Keep-Alive: timeout=15, max=100Connection: Keep-AliveContent-Type: text/html; charset=iso-8859-1 Not FoundThe requested URL /notexist was not found on this server.
Apache/II.0.55 (Unix) PHP/V.0.5 Server at localhost Port 8080可能您会问,不管是404还是200,都会在消息体内给出一个说明网页,那么对于客户端来说二者有什么区别呢?一个比较明显的区别在于200是成功请求,浏览器会记录下这一个地址,以便下次再访问时可以自动提示该地址,而不能是404是失败请求,浏览器只会显示出返回的页面内容,并不怎么会记录此地址,要再一次访问时还需要输入完整的地址.3 401 Access Denied当WEB服务器(Server)不允许匿名访问,而不能是我们又没有提供正确的用户名/密码时,服务器(Server)就会给出这一个返回代码.在IIS中,设置IIS的安全属性为不允许匿名访问(如下图),此时直接或者间接访问的话就会得到以下返回结果:HTTP/I.1 401 Access DeniedServer: Microsoft-IIS/V.1Date: Mon, 06 Mar 2006 09:15:55 GMTWWW-Authenticate: NegotiateWWW-Authenticate: NTLMConnection: closeContent-Length: 3964Content-Type: text/html ……此时浏览器上给出的提示如下图,让我们输入用户名和密码:因返回信息中消息体较长,只取前面两行内容.注意,如果是用localhost来访问本台电脑的IIS,因IE可以直接或者间接取得当前用户的身份,他会和服务器(Server)间直接或者间接进行协商,所以不怎么会看到401提示.当我们在输入了用户名和密码以后,服务器(Server)与客户端会再进行两次对话.最开始客户端向服务器(Server)索取一个公钥,服务器(Server)端会返回一个公钥,二者都用BASE64编码,相应的消息如下(编码部分已经做了处理):GET / HTTP/I.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/IV.0 (compatible; MSIE VI.0; Windows NT V.1; SV1; .NET CLR I.I.4322; .NET CLR II.0.50727)Host: 19II.168.0.55:8080Connection: Keep-AliveAuthorization: Negotiate OPQRST……这样,如果验证通过,服务器(Server)端就会把请求的内容发送过来了,也就是说禁止匿名访问的网站会经过三次请求才可以看到页面.但因为客户端浏览器已经缓存了公钥,用同一个浏览器窗口再一次请求这一个网站上的其他页面时就可以直接或者间接发送验证信息,从而不能是一次交互就可以完成了.4 302 Object Moved用过ASP的人都知道ASP中页面重定向至少有Redirect和Transfer两种方法.二的区别在于Redirect是客户端重定向,而不能是Transfer是服务器(Server)端重定向,那么他们具体是如何通过HTTP消息头实现的呢?先来看一下Transfer的例子:比如说是ASP文件I.asp只有一行<% Server.Transfer "I.htm" %>HTML文件I.htm也只有一行:this is I.htm
如果我们从浏览器里请求I.asp,发送的请求是:GET /I.asp HTTP/I.1Accept: **Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/IV.0 (compatible; MSIE VI.0; Windows NT V.1; SV1; .NET CLR I.I.4322; .NET CLR II.0.50727)Host: localhost:8080Connection: Keep-AliveIf-Modified-Since: Thu, 02 Mar 2006 06:50:13 GMTIf-None-Match: "b224758ec53dc61:9f0"Cookie: ASPSESSIONIDACCTRTTT=PKKDJOPBAKMAMBNANIPIFDAPHTTP/I.1 200 OKServer: Microsoft-IIS/V.1X-Powered-By: ASP.NETDate: Mon, 06 Mar 2006 12:55:57 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Mon, 06 Mar 2006 12:52:32 GMTETag: "76d85bd51c41c61:9f0"Content-Length: 20 this is I.htm
很明显,两种重定向方式虽然看上去结果很像,但在实现原理上有很大的不同.5 500 Internal Server Error500号错误发生在服务器(Server)程序(Procedures)(Procedures)有错误的时候,比如说是,ASP程序(Procedures)(Procedures)为<% if %>显然这一个程序(Procedures)(Procedures)并不完整,于是得到的结果为:HTTP/I.1 500 Internal Server ErrorServer: Microsoft-IIS/V.1Date: Mon, 06 Mar 2006 12:58:55 GMTX-Powered-By: ASP.NETContent-Length: 4301Content-Type: text/htmlExpires: Mon, 06 Mar 2006 12:58:55 GMTSet-Cookie: ASPSESSIONIDACCTRTTT=ALKDJOPBPPKNPCNOEPCNOOPD; path=/Cache-control: private……服务器(Server)发送了500号错误,并且后面通过HTML的方式说明了错误的原因.
var tagarray =['软件(soft)','网络','工具','操作操作系统','
网吧','电脑','破解','服务器(Server)','VPN','(路由器的缩写)器(局域网中常用的一种设备,可以很好的防止Arp病毒)'];var tagencarray =['%C8%ED%BC%FE','%CD%F8%C2%E7','%B9%A4%BE%DF','%CF%B5%CD%B3','%CD%F8%B0%C9','%B5%E7%C4%D4','%C6%C6%BD%E2','%B7%FE%CE%F1%C6%F7','VPN','%C2%B7%D3%C9%C6%F7'];parsetag(1178085);