HTTP状态码

来源:互联网 发布:js删除video节点 编辑:程序博客网 时间:2024/06/07 02:38

HTTP状态码

标签(空格分隔): http http状态码


HTTP状态码(HTTP Status Code)

是用以表示网页服务器HTTP响应状态的3位数字代码

状态码分类

  • 状态码可以被分为五大类:
    • 1XX 表示请求已被接受,需要继续处理。(HTTP/1.1 新加入状态,使用时注意)
    • 2XX 表示请求成功。
    • 3XX 表示需要客户端采取进一步的操作才能完成请求。
    • 4XX 表示客户端可能发生了错误,妨碍了服务器的处理。
    • 5XX 表示服务器在处理请求的过程中有错误或者异常状态发生。

这里写图片描述
图片引用自慕课网


1xx(临时响应)

这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。

代码 说明 100 (Continue/继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。如果服务器收到头信息中带有100-continue的请求,这是指客户端询问是否可以在后续的请求中发送附件。在这种情况下,服务器用100(SC_CONTINUE)允许客户端继续或用417 (Expectation Failed)告诉客户端不同意接受附件。– HTTP 1.1中新加入 101 (Switching Protocols/切换协议)SC_SWITCHING_PROTOCOLS状态码是指服务器将按照其头信息切换一个不同的协议。 – HTTP 1.1中新加入

2xx (成功)

表示成功处理了请求的状态代码。

代码 说明 200 (OK/成功) SC_OK表示服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。一般用于相应GET和POST请求。这个状态码对servlet是缺省的;如果没有调用setStatus方法的话,就会得到200。 201 (Created/已创建)SC_CREATED表示服务器在请求的响应中建立了新文档;应在定位头信息中给出它的URL。 202 (Accepted/已接受)SC_ACCEPTED告诉客户端,服务器已接受请求,但尚未处理。 203 (Non-Authoritative Information/非授权信息) SC_NON_AUTHORITATIVE_INFORMATION 表示服务器已成功处理了请求,但返回的信息可能来自另一来源。 – HTTP 1.1中新加入 204 (No Content/无内容)SC_NO_CONTENT 表示服务器成功处理了请求,但没有返回任何内容。即,在当前文档没有更新的情况下,来确保浏览器继续显示此文档。这个状态码对于用户周期性的重载某一页非常有用,并且你可以确定先前的页面是否已经更新。 205 (Reset Content/重置内容)SC_RESET_CONTENT 表示 服务器成功处理了请求,但没有返回任何内容。即,没有新文档产生,但是会重置文档显示,这个状态码多用于浏览器清除表单域。 – HTTP 1.1中新加入 206 (Partial Content/局部内容) SC_PARTIAL_CONTENT服务器成功处理了部分 GET 请求(包含Range头信息的局部请求)。 – HTTP 1.1中新加入

3xx (重定向)

这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。

代码 说明 300 (Multiple Choices/多种选择) SC_MULTIPLE_CHOICES 表示针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。即,请求的文档可以在多处找到。 301 (Moved Permanently/永久移动)SC_MOVED_PERMANENTLY 表示请求的网页已永久移动到新位置(地址会在定位响应头信息中给出)。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置(链接新的URL)。 302 (Found/临时移动) SC_FOUND 表示服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。即,定位头信息中所给的URL应被理解为临时交换地址而不是永久的。注意:在 HTTP 1.0中,消息是临时移动(Moved Temporarily)的而不是被找到,因此HttpServletResponse中的常量是SC_MOVED_TEMPORARILY不是我们以为的SC_FOUND。 303 (See Other/查看其他位置)SC_SEE_OTHER 表示请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。请求是POST发出,在定位头信息中的新文档需要用GET找回。 – HTTP 1.1中新加入 304 (Not Modified/未修改)SC_NOT_MODIFIED 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 当客户端有一个缓存的文档,通过提供一个 If-Modified-Since 头信息可指出客户端只希望文档在指定日期之后有所修改时才会重载此文档,用这种方式可以进行有条件的请求。本状态码是指缓冲的版本已经被更新并且客户端应刷新文档。另外,服务器将返回请求的文档及状态码 200。servlet一般情况下不会直接设置这个状态码。它们会实现getLastModified方法并根据修正日期让默认服务方法处理有条件的请求。这个方法的例程已在2.8部分(An Example Using Servlet Initialization and Page Modification Dates/一个使用servlet初始化和页面修正日期的例子)给出。 305 (Use Proxy/使用代理) SC_USE_PROXY 表示请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。 – HTTP 1.1中新加入 307 (Temporary Redirect/临时重定向) SC_TEMPORARY_REDIRECT 表示 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。307状态的规则与302相同。307状态被加入到 HTTP 1.1中是由于许多浏览器在收到302响应时即使是原始消息为POST的情况下仍然执行了错误的转向。只有在收到303响应时才假定浏览器会在POST请求时重定向。添加这个新的状态码的目的很明确:在响应为303时按照GET和POST请求转向;而在307响应时则按照GET请求转向而不是POST请求。注意

在 HttpServletResponse 中没有 SC_TEMPORARY_REDIRECT 常量,所以你只能显示的使用307状态码。 – HTTP 1.1中新加入|


4xx(请求错误)

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

除非响应的是一个 HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。

如果错误发生时客户端正在传送数据,那么使用TCP的服务器实现应当仔细确保在关闭客户端与服务器之间的连接之前,客户端已经收到了包含错误信息的数据包。如果客户端在收到错误信息后继续向服务器发送数据,服务器的TCP栈将向客户端发送一个重置数据包,以清除该客户端所有还未识别的输入缓冲,以免这些数据被服务器上的应用程序读取并干扰后者。

代码 说明 400 (Bad Request/错误请求)SC_BAD_REQUEST 服务器不理解请求的语法。即,指出客户端请求的语法错误。 401 (Unauthorized/未授权) SC_UNAUTHORIZED 表示请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。即,客户端在授权头信息中没有有效的身份信息时访问受到密码保护的页面。这个响应必须包含一个WWW-Authenticate的授权信息头。 403 (Forbidden/禁止) SC_FORBIDDEN 表示服务器拒绝请求。即,表示除非拥有授权否则服务器拒绝提供所请求的资源。这个状态经常会由于服务器上的损坏文件或目录许可而引起。 404 (Not Found/未找到) SC_NOT_FOUND表示服务器找不到请求的网页。这个状态码是常用的响应并且在HttpServletResponse类中有专门的方法实现它:sendError(“message”)。相对于setStatus使用sendError得好处是:服务器会自动生成一个错误页来显示错误信息。 405 (Method Not Allowed/方法禁用) SC_METHOD_NOT_ALLOWED 表示指出请求方法(GET,POST,HEAD,PUT,DELETE,等)对某些特定的资源不允许使用。 – HTTP 1.1中新加入 406 (Not Acceptable/不接受)SC_NOT_ACCEPTABLE表示无法使用请求的内容特性响应请求的网页。即,请求资源的MIME类型与客户端中Accept头信息中指定的类型不一致 407 (Proxy Authentication Required/代理服务器认证要求) 此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。该状态指出客户端必须通过代理服务器的认证。代理服务器返回一个Proxy-Authenticate响应头信息给客户端,这会引起客户端使用带有Proxy-Authorization请求的头信息重新连接。 – HTTP 1.1中新加入 408 (Request Timeout/请求超时) SC_REQUEST_TIMEOUT表示服务器等候请求时发生超时。 – HTTP 1.1中新加入 409 (Conflict/冲突) SC_CONFLICT 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。 该状态通常与PUT请求一同使用。 – HTTP 1.1中新加入 410 (Gone/已删除)SC_GONE表示如果请求的资源已永久删除,服务器就会返回此响应。即,告诉客户端所请求的文档已经不存在并且没有更新的地址。410状态不同于404,410是在指导文档已被移走的情况下使用,而404则用于未知原因的无法访问。 411 (Length Required/需要有效长度)SC_LENGTH_REQUIRED表示服务器不接受不含有效内容长度标头字段的请求。 – HTTP 1.1中新加入 412 (Precondition Failed/先决条件错误)SC_PRECONDITION_FAILED表示服务器未满足请求者在请求中设置的其中一个前提条件。 – HTTP 1.1中新加入 413 (Request Entity Too Large/请求实体过大)SC_REQUEST_ENTITY_TOO_LARGE表示服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。如果服务器认为能够过一段时间处理,则会包含一个Retry-After的响应头信息。 – HTTP 1.1中新加入 414 (Request URI Too Long/请求的URI过长)SC_REQUEST_URI_TOO_LONG表示请求的URI(通常为网址)过长,服务器无法处理。这里所指的“URI”是指URL中主机、域名及端口号之后的内容。 – HTTP 1.1中新加入 415 (Unsupported Media Type/不支持的媒体类型)SC_UNSUPPORTED_MEDIA_TYPE请求的格式不受请求页面的支持。 – HTTP 1.1中新加入 416 (Requested Range Not Satisfiable/请求范围不符合要求)SC_REQUESTED_RANGE_NOT_SATISFIABLE 如果页面无法提供请求的范围,则服务器会返回此状态代码。即,客户端包含了一个服务器无法满足的Range头信息的请求。注意,在servlet 2.1的规范中,类HttpServletResponse并没有SC_REQUESTED_RANGE_NOT_SATISFIABLE 这样的常量,所以你只能直接使用416。在servlet 2.2版本之后都包含了此常量。 – HTTP 1.1中新加入 417 (Expectation Failed/未满足期望值) 服务器未满足”期望”请求标头字段的要求。即,如果服务器得到一个带有100-continue值的Expect请求头信息,这是指客户端正在询问是否可以在后面的请求中发送附件。在这种情况下,服务器也会用该状态(417)告诉浏览器服务器不接收该附件或用100 (SC_CONTINUE)状态告诉客户端可以继续发送附件。 – HTTP 1.1中新加入

5xx(服务器错误)

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。

这些状态码适用于任何响应方法。

代码 说明 500 (Internal Server Error/服务器内部错误) SC_INTERNAL_SERVER_ERROR表示服务器遇到错误,无法完成请求。该状态经常由CGI程序引起也可能由无法正常运行的或返回头信息格式不正确的servlet引起。 501 (Not Implemented/尚未实施) SC_NOT_IMPLEMENTED表示服务器不具备完成请求的功能。 即,告诉客户端服务器不支持请求中要求的功能。例如,客户端执行了如PUT这样的服务器并不支持的命令。 502 (Bad Gateway/错误网关)SC_BAD_GATEWAY表示 服务器作为网关或代理,从上游服务器收到无效响应。即,接收服务器接收到远端服务器的错误响应。 503 (Service Unavailable/服务不可用) SC_SERVICE_UNAVAILABLE表示服务器目前无法使用(服务器在维护或已经超载)。 通常,这只是暂时状态。 504 (Gateway Timeout/网关超时) SC_GATEWAY_TIMEOUT表示服务器作为网关或代理,但是没有及时从上游服务器收到请求。即,接收服务器没有从远端服务器得到及时的响应。 – HTTP 1.1中新加入 505 (HTTP Version Not Supported/HTTP 版本不受支持)SC_HTTP_VERSION_NOT_SUPPORTED 表示服务器不支持请求中所用的 HTTP 协议版本。 –HTTP 1.1中新加入
0 0