图解HTTP学习笔记—HTTP状态码

《图解HTTP》是一本特别浅显易懂的书,形象地解释了HTTP协议中的各种内容。这篇学习笔记摘自原书第四章,返回结果的HTTP状态码。

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求的结果。借助状态码,用户可以直观的知道服务器是否正常处理了请求。

状态码的类别大概可以分为五种,1xx的信息性状态码,表示请求正在处理;2xx的成功状态码,表示请求成功处理;3xx的重定向状态码,表示需要附加操作;4xx的客户端错误状态码,表示服务器无法处理这个请求;5xx的服务器错误状态码,表示服务器程序在处理请求时报错了。

标准化制定的状态码有总60余种,但其实如果能保证遵循类别定义的话,状态码是可以自行设定的。

这里介绍一部分常见的状态码。

1XX状态码:正在处理

1xx状态码是 HTTP/1.1协议新增的状态码, HTTP/1.0中不存在。

100 Continue 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

101 Switching Protocols 请求者已要求服务器切换协议,服务器已确认并准备切换。

102 Processing 代表处理将被继续执行。

2XX状态码:成功处理

200 OK 表示请求在服务端被正常处理,一切正常。

其实之前开发的时候貌似无论请求对错,只要正常回来就都返回200了,这种响应按标准来说是错误的。比如某个请求应当出错但返回了200,响应体里面包含了报错信息…我们成天这么干(

204 No Content 表示请求在服务端已经正常处理,但没有资源可以返回。一般来说不需要返回信息的请求可以返回204。

206 Partial Content 表示这个请求只需要资源的一部分,服务器只返回需要范围内的资源。响应报文中包含由Content-Range指定范围的资源。

3XX状态码:重定向

301 Moved Permanently 永久性重定向,表示请求的资源已经被分配给了新的URI,以后应该用新URI请求。

302 Found 临时性重定向,表示请求的资源已经被分配给了新的URI,希望用户在本次能使用新的URI访问。(这个和301很像但不同,301表示永久移动,302表示临时移动,也就是说如果返回302,则表示这个URI在短期的未来内还有可能发生多次改变,而301的变动一般是长期的)

303 See Other 表示由于请求对应的资源存在着另一个URI,应该使用GET方法定向获取请求的资源。(303和302又很像,但303规定了服务端希望客户端使用GET)

当301,302,303状态码被返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。301,302标准是禁止将POST改为GET的,但是实际用的时候大家都无视了这个规则。

304 Not Modified 表示资源已找到,但是并不符合条件中的要求,此时服务器端资源并未改变,可以直接使用客户端未过期的缓存。附带条件的请求是指GET方法中的请求报文内包含了If-Match等各种条件限制的首部。(304虽然被划分在重定向类别里,但其实和重定向没什么关系)

307 Temporary Redirect 临时重定向。此状态码和302含义相同,但它不会把POST变成GET,不过不同浏览器也会有不同情况。

4XX状态码:客户端错

400 Bad Request 请求出错。表示请求报文存在语法错误,需要客户端修改请求后再次发送。

401 Unauthorized 需要认证。表示发送的请求需要通过一层HTTP认证的认证信息。另外如果之前已经进行过一次请求,则表示用户认证失败。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。浏览器初次接收到401时,会弹出认证用的会话窗口。

403 Forbidden 请求访问被拒绝。服务端没必要给出详细的拒绝理由,但如果服务端想的话也不是不行,在响应报文主体部分进行一些描述就可以了。

404 Not Found 【找不着了】

如果你想的话,也可以拿404当403用,拒绝这个请求并表示不想说明理由。

5XX状态码:服务端错

500 Internal Server Error 表示后端又炸了服务器在执行请求时出错了,一般是服务器端的处理程序出现了bug。

502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503 Service Unavailable 表示现在服务器太忙了,正在超负载或者停机维护,目前无法处理请求(想到了某教务系统)

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2023 Shawn Zhou
  • Hexo 框架强力驱动 | 主题 - Ayer
  • 访问人数: | 浏览次数:

感谢打赏~

支付宝
微信