文章目录
- 前言
- 一、认识响应状态码
- 1. 什么是HTTP响应状态码
- 2. Http响应状态码的作用
- 3. 优化和调试HTTP请求的建议
- 二、1xx 信息响应
- 1. 认识http信息响应
- 2. 常见的信息响应状态码
- 三、2xx 成功响应
- 1. 认识HTTP成功响应
- 2. 常见的成功响应状态码
- 四、3xx 重定向
- 1. 认识http重定向
- 2. 常见的重定向状态码
- 五、4xx 客户端响应
- 1. 认识http客户端响应
- 2. 常见的客户端响应状态码
- 六、5xx 服务端响应
- 1. 认识HTTP服务端响应
- 2. 常见的服务端响应状态码
- 总结
前言
为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)
一、认识响应状态码
1. 什么是HTTP响应状态码
HTTP状态码是由服务器在响应客户端请求时返回的三位数字代码。它们用于表示HTTP请求的处理状态和结果。每个状态码都具有特定的含义,用于向客户端传达有关请求处理情况的信息。
2. Http响应状态码的作用
-
提供请求处理结果信息:HTTP状态码告知客户端请求的处理情况,包括成功、重定向、客户端错误和服务器错误等。通过状态码,客户端可以了解请求是否成功处理,以及如何进一步处理响应数据。
-
识别请求错误原因:状态码可以帮助客户端定位请求出错的原因。例如,当客户端发送了无效的请求或请求的资源不存在时,服务器会返回相应的错误状态码,使客户端能够了解到具体的错误原因,从而采取适当的措施。
-
支持协议扩展和升级:HTTP状态码的范围留有一定的空间,以支持未来的协议扩展和升级。通过定义新的状态码,可以为新的协议功能或处理情况提供准确的表示。
-
用于调试和故障排除:状态码在调试和故障排除过程中起到重要的作用。通过查看状态码,开发人员可以追踪请求处理的过程并确定出现问题的具体环节,以便进行修复和改进。
-
帮助构建良好的用户体验:正确使用状态码有助于提供良好的用户体验。例如,合理使用重定向状态码可以引导用户到正确的页面,而准确的错误状态码可以向用户提供友好的错误提示,提高用户满意度。
3. 优化和调试HTTP请求的建议
-
使用适当的HTTP方法:选择正确的HTTP方法来匹配请求的目的。常见的方法包括GET、POST、PUT、DELETE等。确保使用最适合的方法来执行特定的操作,以提高效率和安全性。
-
减少请求次数:减少不必要的请求次数可以显著提高性能。考虑使用请求合并、缓存、批量操作等技术来减少请求的数量,尽量减少服务器和网络的负载。
-
最小化请求大小:减少请求的大小可以降低网络传输成本和请求处理时间。优化请求的体积,例如通过压缩、减少冗余数据、合并请求等方式来减小请求的大小。
-
使用HTTP缓存:利用HTTP缓存可以减少对服务器的请求。合理设置缓存头,包括Cache-Control、Expires等,以及验证缓存是否仍然有效的机制,如ETag和Last-Modified。
-
压缩响应数据:使用压缩算法(如Gzip)对响应数据进行压缩,以减小响应的大小。客户端可以通过设置Accept-Encoding头来指示对压缩响应的支持,服务器则可以通过设置Content-Encoding头来指示响应数据的压缩方式。
-
使用合适的数据格式:选择适合数据交换的格式,如JSON、XML等。根据需求和场景选择合适的数据格式,以提高数据传输的效率和易用性。
-
监控和日志记录:使用适当的工具和技术来监控和记录HTTP请求和响应的信息。通过记录日志和分析监控数据,可以帮助发现潜在的性能问题和错误,以及进行调试和优化。
-
使用合适的工具和库:使用优秀的HTTP请求库或框架,如cURL、HttpClient等,可以简化开发过程并提供更高效的请求处理和调试功能。
-
进行性能测试:对HTTP请求进行性能测试,可以评估系统的性能并找出瓶颈。使用工具如Apache JMeter、LoadRunner等进行负载测试和压力测试,以确定性能瓶颈并进行优化。
-
仔细分析错误信息:对于出现的错误,仔细分析错误信息和状态码,以了解问题的根本原因。结合日志和其他调试工具,追踪请求的处理过程,找出错误所在并采取相应的修复措施。
二、1xx 信息响应
1. 认识http信息响应
HTTP信息响应是指当客户端向服务器发送HTTP请求后,服务器返回给客户端的响应消息
2. 常见的信息响应状态码
100 Continue |
这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它
|
101 Switching Protocol |
该代码是响应客户端的 Upgrade 标头发送的,并且指示服务器也正在切换的协议
|
102 Processing(WebDAV) |
此代码表示服务器已收到并正在处理该请求,但没有响应可用
|
103 Early Hints |
此状态代码主要用于与 Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源
|
三、2xx 成功响应
1. 认识HTTP成功响应
HTTP状态码成功响应是指服务器成功处理了客户端的请求,并返回了符合预期的响应
2. 常见的成功响应状态码
200 OK |
请求成功,成功的含义取决于 HTTP 方法:
|
201 Created |
该请求已成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应
|
202 Accepted |
请求已经接收到,但还未响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理
|
203 Non-Authoritative Information |
|
204 No Content |
|
205 Reset Content |
|
206 Partial Content |
|
207 Multi-Status (WebDAV) |
由 WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个 XML 消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码
|
208 Already Reported(WebDAV) |
在 DAV 里面使用:propstat 响应元素以避免重复枚举多个绑定的内部成员到同一个集合
|
226 IM Used(HTTP Delta encoding) |
服务器已经完成了对资源的 GET 请求,并且响应是对当前实例应用的一个或多个实例操作结果的表示
|
四、3xx 重定向
1. 认识http重定向
HTTP状态码重定向是在服务器接收到客户端的请求后,返回一个特定的状态码,指示客户端需要采取进一步的操作以完成请求
2. 常见的重定向状态码
300 Multiple Choice |
被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向
|
301 Moved Permanently |
|
302 Found |
请求的资源现在临时从不同的 URL 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况,这个响应才是可缓存的
|
303 See Other |
对应当前的响应可以在另一个 URL 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的 POST 请求输出重定向到一个新的资源
|
304 Not Modified |
如果客户端发送一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头的第一个空行结尾
|
305 Use Proxy |
被请求的资源必须通过指定的代理才能访问。Location 域中将给出指定的代理所在的 URL 信息,接受这需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能建立 305 响应
|
306 unused |
在最新版的规范中,306 状态码已经不再被使用
|
307 Temporary Redirect |
请求的资源现在临时从不同的 URL 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的
|
308 Permanent Redirect |
|
五、4xx 客户端响应
1. 认识http客户端响应
- HTTP客户端是指发起HTTP请求的客户端应用程序或设备。当HTTP客户端发送请求到服务器端时,服务器会返回HTTP响应。HTTP客户端会负责接收和处理这个HTTP响应
- HTTP客户端响应是指服务器返回给客户端的HTTP响应报文
2. 常见的客户端响应状态码
400 Bad Request | **
|
401 Unauthorized |
|
402 Payment Required |
此响应码保留以便将来使用,创造此响应码的最初目的是用于数字支付系统
|
403 Forbidden |
|
404 Not Found |
|
405 Method Not Allowed |
|
406 Not Acceptable |
请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体
|
407 Proxy Authentication Required |
与 401响应相似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端可以返回一个 Proxy-Authorization 信息头用以验证
|
408 Request Timeout |
请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这个请求而无需进行任何更改
|
409 Conflict |
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。这个代码只允许用在这样的情况才能被使用:用户被认为能够解决冲突,并且会重新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头
|
410 Gone |
|
411 Length Required |
服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了标明请求消息体长度的有效 Content-Length 头后,客户端可以再次提交该请求
|
412 Precondition Failed |
<font size=“3”
>服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或者多个。这个状态码允许客户端在获取资源的请求的元信息(请求头字段数据)中设置先决条件,以此来避免该请求方法被应用到其希望的内容以外的资源上
|
413 Payload Too Large |
|
414 URL Too Long |
请求的 URL 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。这比较少见,通常情况包括:本应使用 POST 方法的表单提交变成了 GET 方法,导致查询字符串(Query String)过长
|
415 Unsupported Media Type |
对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器所支持的格式,因此请求被拒绝
|
416 Range Not Satisfiable |
如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回 416 状态码
|
417 Expectation Failed |
此响应代码意味着服务器无法满足 Expect 请求标头字段指示的期望值
|
418 I’m a teapot |
服务器拒绝尝试用“茶壶冲泡咖啡”(愚人节玩笑)
|
421 Misdirected Request |
该请求针对的是无法产生响应的服务器。这可以由服务器发送,该服务器为配置为针对包含在请求 URL 中的方案和权限的组合产生响应
|
422 Unprocessable Entity(WebDAV) |
请求格式良好,但由于语义错误而无法遵循
|
423 Locked(WebDAV) |
正在访问的资源被锁定
|
424 Failed Dependency(WebDAV) |
由于先前的请求失败,所以这次请求失败
|
425 Too Early |
服务器不愿意冒着风险去处理可能重播的请求
|
426 Upgrade Required |
服务器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做。服务器在 426 响应中发送 Upgrade 头一直是所需的协议
|
428 Precondition Required |
原始服务器要求该请求是有条件的。旨在防止“丢失更新”问题,即客户端获取资源状态,修改改状态并将其返回服务器,同时第三方修改服务器上的状态,从而导致冲突
|
429 Too Many Requests |
用户在给定时间内发送了太多请求(“限制请求速率”)
|
431 Request Header Fields Too Large |
服务器不愿意处理请求,因为他的请求头字段太大。请求可以在减少请求头字段的大小后重新提交
|
451 Unavailable For Legal Reasons |
用户请求非法资源,例如:由政府审查的网页
|
六、5xx 服务端响应
1. 认识HTTP服务端响应
HTTP服务端响应是指服务器对客户端的HTTP请求做出的响应。服务器接收到客户端的请求后,会根据请求的内容和服务器端的处理逻辑生成一个HTTP响应,然后将该响应发送回客户端
2. 常见的服务端响应状态码
500 Internal Server Error |
服务器遇到了不知道如何处理的情况
|
501 Not Implemented |
此请求方法不被服务器支持且无法被处理。只有 GET 和 HEAD 时要求服务器支持的,他们必定不会返回次错误代码
|
502 Bad Gateway |
此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应
|
503 Service Unavailable |
|
504 Gateway Timeout |
当服务器作为网关,不能及时得到响应时返回此错误代码
|
505 HTTP Version Not Supported |
服务器不支持请求中所使用的 HTTP 协议版本
|
506 Variant Also Negotiates |
服务器有一个内部配置错误:对请求的透明内容协议导致循环引用
|
507 Insufficient Storage |
服务器有内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当端点
|
508 Loop Detected(WebDAV) |
服务器在处理请求时检测到无限循环
|
510 Not Extended |
客户端需要对请求进一步扩展,服务器才能实现它。服务器会回复客户端发出扩展请求所需的所有信息
|
511 Network Authentication Required |
511 状态码指示客户端需要进行身份验证才能获得网络访问权限
|
总结
欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)