http状态码、错误分析
客户端的每一次请求,服务器都必须给出回应。回应包括 HTTP 状态码和数据两部分。
HTTP状态码五大类:
状态码 | 响应类别 | 出现原因 |
---|---|---|
1XX | 信息性状态码(Informational) | 服务器正在处理请求 |
2XX | 成功状态码(Success) | 请求已正常处理完毕 |
3XX | 重定向状态码(Redirection) | 需要进行额外操作以完成请求 |
4XX | 客户端错误状态码(Client Error) | 客户端原因导致服务器无法处理请求 |
5XX | 服务器错误状态码(Server Error) | 服务器原因导致处理请求出错 |
详细信息:
200 OK
请求已成功。响应返回的信息取决于请求中使用的方法,例如:在响应中发送GET对应于所请求资源的实体;HEAD对应于所请求资源的实体头字段信息只存在于响应报文首部,因为它不会返回报文实体,只返回报文首部;POST返回实体;
但是不同的方法可以返回更精确的状态码。
- GET: 200 OK
- POST: 201 Created
- PUT: 200 OK
- PATCH: 200 OK
- DELETE: 204 No Content
201 Created
请求已完成,并导致创建新资源。新创建的资源可以由响应实体中返回的URI引用,具有Location头字段给出的资源的最特定URI。响应应该包括一个实体,其中包含资源特征和位置的列表,用户或用户代理可以从中选择最合适的资源特征和位置。实体格式由Content-Type头字段中给出的媒体类型指定。原始服务器必须在返回201状态代码之前创建资源。如果无法立即执行操作,服务器应该响应202(已接受)响应。
202 Accepted
该请求已被接受处理,但处理尚未完成。该请求最终可能会或可能不会被执行,因为在实际处理时可能不允许该请求。没有用于从诸如此类的异步操作重新发送状态代码的工具。
202回复是故意不承诺的。其目的是允许服务器接受对某些其他进程的请求(可能是每天只运行一次的面向批处理的进程),而不要求用户代理与服务器的连接一直持续到进程完成为止。使用此响应返回的实体应该包括请求的当前状态的指示,以及指*向状态监视器的指针或用户可以期望满足请求的某些估计。
204 No Content*
表示请求已成功处理,但是没有内容返回(就应该没有内容返回的状况)
也就是返回的响应报文中没有报文实体(其实是没有报文实体的主体部分)
浏览器向服务器发送请求后收到了204,那么浏览器页面不会发生更新
一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况
206 Reset Content
表示服务器已经完成了部分GET请求(客户端进行了范围请求)
响应报文中包含Content-Range指定范围的实体内容
301 永久性转移
浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B),旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址
302短暂性转移
临时重定向,表示请求的资源临时搬到了其他位置
表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
303 See Other
表示请求资源存在另一个URI,应使用GET定向获取请求资源
303功能与302一样,区别只是303明确客户端应该使用GET访问
303 表示请求的资源路径发生改变,使用GET方法请求新url。她与302的功能一样,但是明确指出使用GET方法请求新url(第一次请求返回的location)。
400 Bad Request
表示请求报文存在语法错误或参数错误,服务器不理解,服务器不应该重复提交这个请求,需要修改请求内容后再次发送。
原因以及解决思路:
- 前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;最常见的可能就是后端使用@RequestBody 接收,先仔细排查一遍,不行的话,使用@RequestParam再逐一看一下是否可以封装进去
- 前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;这个比较简单,使用JSON.stringify(param) 转换成json字符串
401 Unauthorized
表示发送的请求需要有HTTP认证信息或者是认证失败了
返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部以质询用户信息
浏览器初次接受401时,会弹出认证窗口
403 Forbidden
返回403状态码就是,拒绝或者禁止访问。但是,服务器虽然拒绝或者禁止访问,但是它已经理解了你的请求。
具体原因有以下多种:
错误代码:403.1
HTTP 403.1 禁止访问:禁止可执行访问 Internet 信息服务 原因是执行权限不够,解决方法: 打开“管理工具”的“Internet 信息服务”,右键选择“WEB站点属性”的“主目录”选项卡,把“执行许可”的选项从“无”改为“纯脚本”即可。
错误代码:403.2
403.2是由于”读取”访问被禁止而造成的。导致此错误是由于没有可用的默认网页且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为”可执行”或”脚本”权限。
错误代码:403.3
403.3是由于”写入”访问被禁止而造成的,当试图将文件上载到目录或在目录中修改文件,但该目录不允许”写”访问时就会出现此种错误。
错误代码:403.4
403.4是由于要求SSL而造成的,您必须在要查看的网页的地址中使用”https”。
错误代码:403.5
403.5是由于要求使用 128 位加密算法的 Web 浏览器而造成的,如果您的浏览器不支持128位加密算法就会出现这个错误,可以连接微软网站进行浏览器升级。
错误代码:403.6
403.6是由于IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的 IP 地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。
错误代码:403.7
403.7是因为要求客户证书,当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层 (SSL) 客户证书时会返回此种错误。
404 Not Found
表示服务器找不到你请求的资源。
405 Method Not Allowed
请求行中指定的方法不允许由Request-URI标识的资源。响应必须包含一个Allow标头,其中包含所请求资源的有效方法列表。
410 Gone
所请求的资源已从这个地址转移,不再可用。
413 Request Entity Too Large
服务器拒绝处理请求,因为请求实体大于服务器愿意或能够处理的请求实体。服务器可以关闭连接以防止客户端继续请求。
如果条件是临时的,服务器应该包括一个Retry-After头字段,以指示它是临时的,并且在客户端可以再次尝试之后。
414 Request-URI Too Long
服务器拒绝为请求提供服务,因为Request-URI比服务器愿意解释的长。这种罕见的情况是只可能当客户端已经不正确地将POST请求转换到具有长查询信息的GET请求中,当客户端已陷入URI重定向“黑洞”发生(例如,一个重定向的URI指向前缀它本身的后缀,或者当服务器受到试图利用固定长度缓冲区来读取或操作Request-URI的某些服务器中存在的安全漏洞的客户端的攻击时。
415 Unsupported Media Type
服务器拒绝为请求提供服务,因为请求的实体采用所请求方法的请求资源不支持的格式。
422 Unprocessable Entity
客户端上传的附件无法处理,导致请求失败。
429 Too Many Requests
客户端的请求次数超过限额。
500 Internal Server Error
表示服务器执行请求的时候出错了,可能是服务器端的bug,但是也可能是前端的问题,比如后台报了序列化错误,可能就是因为你的前端没有设置content-type=application/json
502 Bad Gateway
服务器在充当网关或代理时,在尝试完成请求时从其访问的上游服务器收到无效响应。
503 Bad Gateway
由于服务器的临时过载或维护,服务器当前无法处理请求。这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解。如果已知,延迟的长度可以在Retry-After报头中指示。如果没有给出Retry-After,客户端应该像处理500响应一样处理响应。
注意:503状态代码的存在并不意味着a
服务器必须在变得过载时使用它。有些服务器可能希望
简单地拒绝连接。
http状态码、错误分析的更多相关文章
- http状态码汇总及问题经验总结
我们经常会遇到404.500.302等提示,它们究竟是什么意思呢?除了这几个常见的状态码外,还有哪些我们没有遇到过的但有可能出现的状态码呢?这里本人做了一个汇总,与大家分享一下. 常见的HTTP错误可 ...
- Http状态码之:301、302重定向
概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地 ...
- HTTP常用状态码分析
不管是面试还是工作中,经常会碰到需要通过HTTP状态码去判断问题的情况,比如对于后台RD,给到前端FE的一个接口,出现502或者504 error错误,FE就会说接口存在问题,如果没有知识储备,那就只 ...
- Java发送Http请求并获取状态码
通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...
- HTTP各状态码解释
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必 ...
- 关于Http状态码
Http状态码表示Http协议所返回的响应的状态.比如客户端向服务器发送请求,如果成功的获得请求的资源,则返回的状态码为200,表示相应成功.如果请求的资源不存在,则通常返回404错误. Http状态 ...
- 生产环境常见的HTTP状态码列表
生产环境常见的HTTP状态码列表(List of HTTP status codes)为: 200 - OK,服务器成功返回网页 - Standard response for success ...
- 常用的14种HTTP状态码速查手册
分类 1xx \> Information(信息) // 接收的请求正在处理 2xx \> Success(成功) // 请求正常处理完毕 3xx \> Redirection(重定 ...
- HTTP状态码(HTTP Status Code)
一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 所有状态解释: 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说 ...
随机推荐
- [leetcode]61. Rotate List反转链表k个节点
类似于找链表的后k个节点 不同的是要把前边的接到后边 public ListNode rotateRight(ListNode head, int k) { //特殊情况 if (head==null ...
- C语言测一个浮点数的位数长度
测浮点数的位数牵扯到一个精度的问题,用普通的测整形数值的方法不能实现,于是我自己写了一个测浮点数的函数. #include <stdio.h> //for printf int lengt ...
- 学习DOS,个人笔记
在win中\表示根目录, 在linux中/表示根目录 注意: 有些家庭版的系统会选择性的调用命令的,有的命令虽然有那个文件,但是不能使用..... dir 命令 英语全称 ...
- body-parser 源码分析
body-parser 源码分析 预备知识:熟悉 express 的中间件逻辑 阅读事件:30min 1. body-parser 解决什么问题 在 node http 模块中,您只能通过 data ...
- android中VideoView播放sd卡上面的视频
(1)videoView组件只支持MP4和3gp格式的视屏播放,如果想播放其它视屏格式的文件,还得开发能够播放的视屏播放器 (2)videoView组件功能比较单一,如果想开发功能丰富的播放器,还得重 ...
- 为Github仓库添加Github Actions实现持续集成: Android apk自动编译发布以及github pages同步推送coding.net
内容转载自我的博客 目录 说明 1. 编写Android项目的CI配置文件 2. 编写Jekyll项目的CI配置文件 2.1 配置coding.net 2.2 配置github 2.3 自动部署到co ...
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- 2021升级版微服务教程6—Ribbon使用+原理+整合Nacos权重+实战优化 一篇搞定
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...
- 执行py文件需要可执行权限吗?
案例解析 这个问题描述起来有点违反直觉,要执行一个文件难道不应该需要可执行权限吗?让我们先来看一个例子: # module1.py def test(): print ('hello world!') ...
- show slave status常用参数备忘
mysql> show slave status\G*************************** 1. row *************************** Slave_IO ...