状态码(以下带图片的比较常见)
常用:
1XX:通知
1XX系列响应代码仅在与HTTP服务器沟通时使用。
a. 100("Continue")
该响应代码表明:客户端应重新发送初始请求,
并在请求中附上第一次请求时未提供的(可能很大或者包含敏感信息的)表示。
并且客户端这次发送的请求不会被拒绝。
b. 101("Switching Protocols")
通知服务器它想改用除HTTP协议之外的其他协议时,客户端将获得此响应代码。
101响应代码表示“OK,我现在改用另一个协议了”。
2XX: 成功
2XX系列响应代码表明操作成功了。
a. 200("OK")
它表示服务器成功执行了客户端所请求的动作
b. -201("Created")
当服务器依照客户端的请求创建了一个新资源时,发送此响应代码。
c. -202("Accepted")
客户端的请求无法或将不被实时处理。请求稍后会被处理。
d. 203("Non-Authoritative Information")
这个响应代码跟200一样,只不过服务器想让客户端知道,有些响应报头并非来自该服务器–他们可能是从客户端先前发送的一个请求里复制的,或者从第三方得到的。
e. 204("No Content")
若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用此响应代码。服务器也可以对GET请求返回此响应代码,这表明“我把请求告诉你,但不希望返回信息给我,没啥事,我就给你说一下”。
f. 205("Reset Content")
它与204类似,但与204不同的是,它表明客户端应重置数据源的视图或数据结构。假如你在浏览器里提交一个HTML表单,并得到响应代码204,那么表单里的各个字段值不变,可以继续修改它们;但假如得到的响应代码205,那么表单里的各个字段将被重置为它们的初始值。从数据录入方面讲:204适合对单条记录做一系列编辑,而205适于连续输入一组记录。
g. 206("Partial Content")
部分GET请求常用于大型二进制文件的断点续传。
回显的是一部分的内容
例如:在线图片或比较大的pdf的加载,给一个范围,是部分的请求。
3XX 重定向
3XX系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。它们通常用于GET请求。他们通常告诉客户端需要向另一个URI发送GET请求,才能得到所需的表示。那个URI就包含在Location响应报头里。
a. 300("Multiple Choices")
- 若被请求的资源在服务器端存在多个表示,而服务器不知道客户端想要的是哪一个表示时,发送这个响应代码。
- 或者当客户端没有使用Accept-*报头来指定一个表示,
- 或者客户端所请求的表示不存在时,也发送这个响应代码。
b.301("Moved Permanently")
服务器知道客户端试图访问的是哪个资源,但它不喜欢客户端用当前URI来请求该资源。
它希望客户端记住另一个URI,并在今后的请求中使用那个新的URI。你可以通过这个响应代码来防止由于URI变更而导致老URI失效。
c. 302("Found")
防火墙经常用到,本来要访问 a,但是需要认证,所以需要先到 b(返回302),经过认证之后(返回303,通过了)才能到 a.
d. 303("See Other")
请求已经被处理,但服务器不是直接返回一个响应文档,而是返回一个响应文档的URI。
不管以前是啥现在用GET
c. 304("Not Modified")
访问的页面没有被修改(例:刷新页面)
d. 305("Use Proxy")
这个响应代码用于告诉客户端它需要再发一次请求,但这次要通过一个HTTP代理发送,而不是直接发送给服务器。
e. 307("Temporary Redirect") (是个标准,302,303没人遵循)
一定要改成GET,因为GET是没啥副作用的,而Post会进行删除修改等操作导致不安全
f. 特殊: <meta http-equiv="refresh" content="5; URL=1.html">
html语句:能够产生重定向,但是返回200ok
延迟跳转页面
.
4XX:客户端错误
这些响应代码表明客户端出现错误。不是认证信息有问题,就是表示格式或HTTP库本身有问题。客户端需要自行改正。
a. 400("Bad Request")
这是一个通用的客户端错误状态,当其他4XX响应代码不适用时,就采用400。此响应代码通常用于“服务器收到客户端通过PUT或者POST请求提交的表示,表示的格式正确,但服务器不懂它什么意思”的情况。
例:
b. 401("Unauthorized")
- 未授权,有窗口蹦出
- 用户名/密码,
- API key
- 认证令牌。
- 客户端常常通过向一个URI发送请求,并查看收到401响应,以获知应该发送哪种证书,以及证书的格式。
.
c. 402("Payment Required")
除了它的名字外,HTTP标准没有对该响应的其他方面作任何定义。因为目前还没有用于HTTP的微支付系统,所以它被留作将来使用。
d. 403("Forbidden")
权限不够,不允许访问。
e. 404("Not Found")
没有找到,但是404也有可能是用来掩饰403或者401.
f. 405("Method Not Allowd")
客户端试图使用一个本资源不支持的HTTP方法。
g. 406("Not Acceptable")
当客户端对表示有太多要求,以至于服务器无法提供满足要求的表示,服务器可以发送这个响应代码。
h. 407("Proxy Authentication Required")
只有HTTP代理会发送这个响应代码。它跟401类似,唯一区别在于:这里不是无权访问web服务,而是无权访问代理。
i. 408("Reqeust Timeout")
假如HTTP客户端与服务器建立链接后,却不发送任何请求(或从不发送表明请求结束的空白行),那么服务器最终应该发送一个408响应代码,并关闭此连接。
g. 409("Conflict")
此响应代码表明:你请求的操作会导致服务器的资源处于一种不可能或不一致的状态。
例: 你试图修改某个用户的用户名,而修改后的用户名与其他存在的用户名冲突了。
h. 410("Gone")
这个响应代码跟404类似,但它提供的有用信息更多一些。
这个响应代码用于服务器知道被请求的URI过去曾指向一个资源,但该资源现在不存在了的情况。
服务器不知道 该资源的新URI,服务器要是知道该URI的话,它就发送响应代码301.410和310一样,都有暗示客户端不应该再请求该URI的意思,不同之处在于:410只是指出该资源不存在,但没有给出该资源的新URI。
i. 411("Length Required")
HTTP服务器可以要求客户端必须设置该报头。服务器可以中断任何没有提供Content-Length报头的请求,并要求客户端重新提交包含Content-Length报头的请求。
这个响应代码就是用于中断未提供Content-Lenght报头的请求的。假如客户端提供错误的长度,或发送超过长度的表示,服务器可以中断请求并关闭链接,并返回响应代码413。
j. 412("Precondition Failed")
客户端在请求报头里指定一些前提条件,并要求服务器只有在满足一定条件的情况下才能处理本请求。若服务器不满足这些条件,就返回此响应代码。
k. 413("Request Entity Too Large")
这个响应代码跟411类似,服务器可以用它来中断客户端的请求并关闭连接,而不需要等待请求完成。
l. 414("Request-URI Too Long") 重要程度:低。
HTTP标准并没有对URI长度作出官方限制,但大部分现有的web服务器都对URI长度有一个上限,而web服务可能也一样。
导致URI超长的最常见的原因是:表示数据明明是该放在实体主体里的,但客户端却把它放在了URI里。深度嵌套的数据结构也有可能引起URI过长。
m. 415("Unsupported Media Type") 重要程度:中等。
当客户端在发送表示时采用了一种服务器无法理解的媒体类型,服务器发送此响应代码。
n. 416("Requestd Range Not Satisfiable") 重要程度:低。
当客户端所请求的字节范围超出表示的实际大小时,服务器发送此响应代码。
例如:你请求一个表示的1-100字节,但该表示总共只用99字节大小。
o. 417("Expectation Failed") 重要程度:中等。
此响应代码跟100正好相反。
当你用LBYL请求来考察服务器是否会接受你的表示时,如果服务器确认会接受你的表示,那么你将获得响应代码100,否则你将获得417。
5XX 服务端错误
这些响应代码表明服务器端出现错误。一般来说,这些代码意味着服务器处于不能执行客户端请求的状态,此时客户端应稍后重试。
5XX系列响应代码在数量上不如4XX系列多,这不是因为服务器错误的几率小,而是因为没有必要如此详细–对于服务器方面的问题,客户端是无能为力的。
a. 500("Internal Server Error")
这是一个通用的服务器错误响应。对于大多数web框架,如果在执行请求处理代码时遇到了异常,它们就发送此响应代码。
b. 501("Not Implemented")
客户端试图使用一个服务器不支持的HTTP特性。
最常见的例子是:客户端试图做一个采用了拓展HTTP方法的请求,而普通web服务器不支持此请求。它跟响应代码405比较相似,405表明客户端所用的方法是一个可识别的方法,但该资源不支持,而501表明服务器根本不能识别该方法。
c. 502("Bad Gateway")
只有HTTP代理会发送这个响应代码。它表明代理方面出现问题,或者代理与上行服务器之间出现问题,而不是上行服务器本身有问题。若代理根本无法访问上行服务器,响应代码将是504。
d. 503("Service Unavailable")
此响应代码表明HTTP服务器正常,只是下层web服务服务不能正常工作。最可能的原因是资源不足:服务器突然收到太多请求,以至于无法全部处理。由于此问题多半由客户端反复发送请求造成,因此HTTP服务器可以选择拒绝接受客户端请求而不是接受它,并发送503响应代码。
e. 504("Gateway Timeout")
跟502类似,只有HTTP代理会发送此响应代码。此响应代码表明代理无法连接上行服务器。
f. 505("HTTP Version Not Supported")
当服务器不支持客户端试图使用的HTTP版本时发送此响应代码。