首页 > 代码库 > HTTP请求和响应3:状态码(status)

HTTP请求和响应3:状态码(status)

HTTP状态码被分为了五大类:
100~199:信息提示
200~299:成功
300~399:重定向
400~499:客户端错误
500~599:服务器错误

状态码为客户端提供了一种理解事务处理结果的便捷方式,下面对每一种状态码做了一个总结。

100~199————信息性状态码

信息性状态码用于信息提示,已定义的信息性状态码如下:
1)100
原因短语:Continue
含义:说明收到了请求的初始部分,请客户端继续,发送了这个状态码之后,服务端在收到请求之后必须进行响应。客户端需要发送一个携带了值为100 Continue的Expect请求首部,服务端收到后,将回送一个状态码为100的响应,并期待客户端发送请求实体到服务端处理。


2)101
原因短语:Switching Protocols
含义:说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议

200~299————成功状态码

下面是已定义的表示成功的状态码:
1)200
原因短语:OK
含义:请求没问题,实体的主体部分包含了所请求的资源


2)201
原因短语:Created
含义:用于创建服务器对象的请求,如PUT,服务器必须在发送这个状态码之前创建好对象


3)202
原因短语:Accepted
含义:请求已被接受,但服务器还未对其执行任何动作,不能保证服务器会完成这个请求


4)203
原因短语:Non-Authoritative Information
含义:实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本。如果中间节点上有一份资源副本,但无法或者没有对它所发送的与资源有关的元信息进行验证,就会出现这种情况。


5)204
原因短语:No Content
含义:响应报文中包含若干首部和一个状态行,但没有实体的主体部分。主要用于在浏览器不转为现实新文档的情况下,对其进行更新。


6)205
原因短语:Reset Content
含义:告知浏览器清除当前页面中的所有HTML表单元素


7)206
原因短语:Partial Content
含义:客户端可以通过一些特殊的首部来获取部分或某个范围内的文档,这个状态码就说明范围请求成功了

300~399————重定向状态码

重定向状态码用于重定向资源,如果资源已被移动,可发送一个重定向状态码和一个可选的Location首部来告知客户端资源已被移走,以及在哪里可以找到它,这样,浏览器就可以在不打扰使用者的情况下,透明地转入新的位置了。
1)300
原因短语:Multiple Choices
含义:客户端请求一个实际指向多个资源的URL时会返回这个状态码,下面是一个例子:
请求报文:
GET /pet-products.txt HTTP/1.1
Host: www.joes-hardware.com
Accept: *
服务端响应报文重定向到另一个地址:
HTTP/1.1 301 OK
Location: http://www.gentle-grooming.com/
Content-length: 56
Content-type: text/plain

//body
客户端浏览器收到重定向响应报文后,将发起一个向新地址的请求:
GET / HTTP/1.1
Host: www.gentle-grooming.com
Accept: *
新地址的响应报文:
HTTP/1.1 200 OK
Content-type: text/html
Content-length: 3307

...

2)301
原因短语:Moved Permanently
含义:在请求的URL已被移除时使用。响应的Location首部中应该包含资源现在所处的URL


3)302
原因短语:Found
含义:与301类似,但是,客户端应该使用Location首部给出的URL来临时定位资源,将来的请求仍应使用老的URL


4)303
原因短语:See Other
含义:告知客户端应该用另一个URL来获取资源,新的URL位于响应报文的Location首部,其主要目地是允许POST请求的响应将客户端定位到某个资源上去


4)304
原因短语:Not Modified
含义:客户端可以通过所包含的请求首部,使其请求变成有条件的,客户端发起一个条件GET请求,而最近资源未被修改的话,就可以用这个状态码说明资源未被修改,带有这个状态码的响应不包含实体的主体部分。
请求报文:
GET /seasonal/index-fall.html HTTP/1.1
Host: www.joes-hardware.com
Accept: *
If-Modified-Since: Fri, Oct 3 1997 02:16:00 GMT
如果资源未被修改过,则响应报文:
HTTP/1.1 304 Not Modified
...

5)305
原因短语:Use Proxy
含义:用来说明必须通过一个代理来访问资源,代理的位置由Location首部给出


6)307
原因短语:Temporary Redirect
含义:和301类似,但客户端应该使用Location首部给出的URL来临时定位资源,将来的请求应该使用老的URL

400~499————客户端错误状态码

客户端错误状态码反馈客户端请求导致的错误,一般由浏览器来处理,只有少量错误,如404,会反馈到用户面前。
1)400
原因短语:Bad Request
含义:告知客户端它发送了一个错误的请求


2)401
原因短语:Unauthorized
含义:与适当的首部一同返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证


3)402
原因短语:Payment Required
含义:目前还未使用,保留


4)403
原因短语:Forbidden
含义:用于说明请求被服务器拒绝了


5)404
原因短语:Not Found
含义:服务器无法找到所请求的URL


6)405
原因短语:Method Not Allowed
含义:发起的请求中带有所请求的URL不支持的方法时,使用此状态码。会在响应中包含Allow首部,以告知客户端对所请求的资源可以使用哪些方法


7)406
原因短语:Not Acceptable
含义:客户端可以指定参数来说明它们愿意接收什么类型的实体,服务器没有与客户端可接受的URL相匹配的资源时,使用此代码


8)407
原因短语:Proxy Authentication Required
含义:与401类似,但要求对资源进行认证的代理服务器


9)408
原因短语:Request Timeout
含义:超时后,服务器可以回送此状态码,并关闭连接


10)409
原因短语:Conflict
含义:用于说明请求可能在资源上引发的一些冲突


11)410
原因短语:Gone
含义:与404类似,只是服务器曾经拥有过此资源,但此资源已经被移除


12)411
原因短语:Length Required
含义:服务器要求在请求报文中包含Content-Length首部时使用


13)412
原因短语:Precondition Failed
含义:客户端发起了条件请求,且其中一个条件失败了的时候使用。客户端包含了Expect首部时发起的就是条件请求


14)413
原因短语:Request Entity Too Large
含义:客户端发送的实体主体部分比服务器能够或者希望处理的要大时,使用此状态码


15)414
原因短语:Request URI Too Long
含义:客户端所发请求中的请求URL比服务器能够或者希望处理的要长时,使用此状态码


16)415
原因短语:Unsupported Media Type
含义:服务器无法理解或无法支持客户端所发实体的内容类型时,使用此状态码


17)416
原因短语:Requested Range Not Satisfiable
含义:请求报文所请求的是指定资源的某个范围,而此范围无效或无法满足时,使用此状态码


18)417
原因短语:Expectation Failed
含义:请求的Expect请求首部包含了一个期望,但服务器无法满足此期望时,使用此状态码

500~599————服务器错误状态码

当服务器自身出错后,回送报文中将包含此告警码。
1)500
原因短语:Internal Server Error
含义:服务器出错


2)501
原因短语:Not Implemented
含义:客户端发起的请求超过服务器的能力范围


3)502
原因短语:Bad Gateway
含义:作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应


4)503
原因短语:Service Unavailable
含义:用来说明服务器暂时无法为请求提供服务,可以包含一个Retry-After首部,告诉客户端资源什么时候可用


5)504
原因短语:Gateway Timeout
含义:响应来自网关或代理,在等待另一个服务器对其请求进行响应时超时了


6)505
原因短语:HTTP Version Not Supported
含义:服务器收到的请求使用了它无法或不愿支持的协议版本

HTTP请求和响应3:状态码(status)