之前的文章写了基本的状态码如下,但是没有明确的说明,抽时间整理了更详细的说明
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
1XX:指示信息--表示请求已接收,继续处理
100 Continue
只有请求的一部分已经被服务器接收,但只要它没有被拒绝,客户端应继续该请求。
101 Switching Protocols
服务器切换协议。
2xx:成功--表示请求已被成功接收、理解、接受
200 OK
表示从客户端发来的请求在服务器被正常处理了。
204 no content
表示从客户端发来的请求在服务器被正常处理了,但在返回的响应报文中不含实体的主体部分。
206 partial content
表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。
3xx:重定向--要完成请求必须进行更进一步的操作
301 moved permanently (多种选择)
永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这时应按Location首部字段提示的URI重新保存。
如下方给出的请求URI,当指定资源路径的最后忘记添加斜杠“/”,就会产生301状态码
http://example.com/sample
302 found (临时移动)
临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。
与301的区别:302代表的资源不是被永久移动,只是临时性质的,已移动的资源对应的URI将来还有可能发生改变。
如用户把URI保存成书签,但不会像301出现时那样去更新书签,而是仍旧保留返回302的页面对应的URI。
303 see other (查看其他位置)
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
与302的区别:303明确表示客户端应采用GET方法获取资源
当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改为GET,并删除请求报文内的主体,之后请求会自动再次发送。
301、302标准是禁止将POST改为GET的,但实际使用时大家都会这么做。
304 not modified (未修改)
该状态码表示客户端发送附带条件的请求时,服务器端资源已找到,但未符合条件请求。304返回时,不包含任何响应的主体部分。
304虽然被划分在3XX类别中,但是和重定向没有关系。
305(使用代理)
请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。
307 temporary rediect
临时重定向。该状态码与302有着相同的含义,但307会遵照浏览器标准,不会从POST变成GET。对于处理响应时的行为,每种浏览器有可能出现不同的情况。
4xx:客户端错误--请求有语法错误或请求无法实现
400 bad request 错误请求
该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
401 unauthorized 身份验证错误
该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外,若之前已进行过1次请求,则表示用户认证失败。
返回含有401的响应必须包含一个适用于被请求资源的WWWAuthenticate首部用以质询(challenge)用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。
403 forbidden 禁止
该状态码表明对请求资源的访问被服务器拒绝了。
服务器端没有必要给出拒绝的详细理由,但如果想作说明,可在实体的主体部分对原因进行描述,这样就能让用户看到了。
未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源IP地址试图访问)等列举的情况都可能是发生了403的原因
404 not found 找不到页面
该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
405(方法禁用)
禁用请求中指定的方法。
406(不接受)
无法使用请求的内容特性响应请求的网页。
407(需要代理授权)
此状态码与 401 类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
408(请求超时)
服务器等候请求时发生超时。
409(冲突)
服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。
410(已删除)
请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久删除,您应当使用 301 指定资源的新位置。
411(需要有效长度)
服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件)
服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大)
服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的 URI 过长)
请求的 URI(通常为网址)过长,服务器无法处理
415(不支持的媒体类型)
请求的格式不受请求页面的支持
416(请求范围不符合要求)
如果页面无法提供请求的范围,则服务器会返回此状态码
417(未满足期望值)
服务器未满足"期望"请求标头字段的要求。
5xx:服务器端错误--服务器未能实现合法的请求
500 (服务器内部错误)
状态码表明服务器端在执行请求时发生了错误。无法完成请求。 该也有可能是Web应用存在的bug或某些临时的故障。
501(尚未实施)
服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
502(错误网关)
服务器作为网关或代理,从上游服务器收到了无效的响应。
503 service unavailable
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入RetryAfter首部字段再返回给客户端。
状态码和状况的不一致
不少返回的状态码响应都是错误的,但是用户可能擦觉不到这点。如Web应用程序内部发生错误,状态码依然返回200 OK,测试的时候就需要注意了。
504 gateway timeout
网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。
505(HTTP 版本不受支持)
服务器不支持请求中所使用的 HTTP 协议版本。
网友评论