1.3
状态码

每条HTTP响应消息都必须在第一行中包含一个状态码,说明请求的结果。根据代码的第一位数字,可将状态码分为以下5类。

(1)1xx——提供信息。

(2)2xx——请求被成功提交。

(3)3xx——客户端被重定向到其他资源。

(4)4xx——客户端错误。

(5)5xx——服务器执行请求时遇到错误。

此外,还有大量特殊状态码,其中许多状态码仅用在特殊情况下。下面列出渗透测试员在攻击Web应用程序时最有可能遇到的状态码及其相关的原因短语。

●100 Continue:当客户端提交一个包含主体的请求时,将发送这个响应,该响应表示已收到请求消息头,客户端应继续发送主体,请求完成后,再由服务器返回另一个响应。

●200 OK:本状态码表示已成功提交请求,且响应主体中包含请求结果。

●201 Created:PUT请求的响应返回这个状态码,表示请求已成功提交。

●301 Moved Permanently:本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL,以后客户端应使用新URL替换原始URL。

●302 Found:本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL,客户端应在随后的请求中恢复使用原始URL。

●304 Not Modified:本状态码指示浏览器使用缓存中保存的所请求资源的副本,服务器使用If-Modified-Since与If-None-Match消息头确定客户端是否拥有最新版本的资源。

●400 Bad Request:本状态码表示客户端提交了一个无效的HTTP请求,当以某种无效的方式修改请求时(例如,在URL中插入一个空格符),可能会遇到这个状态码。

●401 Unauthorized:说明服务器在许可请求前要求HTTP进行身份验证,WWW-Authenticate消息头可以详细说明所支持的身份验证类型。

●403 Forbidden:本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。

●404 Not Found:本状态码表示所请求的资源并不存在。

●405 Method Not Allowed:本状态码表示指定的URL不支持请求中使用的方法,例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。

●413 Request Entity Too Large:如果在本地代码中存在缓冲问题并就此提交超长数据串,则本状态码表示请求主体过长,服务器无法处理。

●414 Request-url Too Long:与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。

●500 Internal Server Error:本状态码表示服务器在执行请求时遇到错误,当提交无法预料的输入、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码,应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。

●503 Service Unavailable:通常本状态码表示尽管Web服务器运转正常并且能够响应请求,但服务器访问的应用程序还是无法作出响应,应该进行核实,是否因为执行了某种行为而造成这个结果。

注意

所谓状态码就是服务器返回的结果,如图1.12所示。每次访问网站,服务器对我们的请求都会有一个回应,每个回应主要通过状态码来进行反馈。

图1.12 HTTP状态码