一、http、https网络请求状态码 statusCode 200、300、400、500
200-206:服务器成功处理了请求的状态代码,说明网页或资源可以正常访问。
-
- 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页或资源。
- 201(已创建) 请求成功且服务器已创建了新的资源。
- 202(已接受) 服务器已接受了请求,但尚未对其进行处理。
- 203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另一来源的信息。
- 204(无内容) 服务器成功处理了请求,但未返回任何内容。
- 205(重置内容) 服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。
- 206(部分内容) 服务器成功处理了部分 GET 请求。
300-307:要完成请求,需要进一步进行操作。通常,这些状态代码是永远重定向的。
-
- 300(多种选择) 服务器根据请求可执行多种操作。服务器可根据请求者 来选择一项操作,或提供操作列表供其选择。
- 301(永久移动) 请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。应使用此代码通知搜索引擎蜘蛛网页或网站已被永久移动到新位置。
- 302(临时移动) 服务器正从不同位置的网页响应请求,请求者应继续使用原有位置来进行以后的请求。服务器会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此不应使用此代码来告诉搜索引擎页面或网站已被移动。
- 303(查看其他位置) 当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。
- 304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过,应当将服务器配置为返回此响应。由于服务器可以告诉 搜索引擎自从上次抓取后网页没有更改过,因此可节省带宽和开销。
-
- 305(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。
- 307(临时重定向) 服务器正从不同位置的网页响应请求,请求者应继续使用原有位置来进行以后的请求。服务器会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此不应使用此代码来告诉搜索引擎某个页面或网站已被移动。
4XX:请求可能出错。会妨碍服务器的处理。
-
- 400(错误请求) 服务器不理解请求的语法。
- 401(身份验证错误) 此页要求授权。
- 403(禁止) 服务器拒绝请求。
- 404(未找到) 服务器找不到请求的网页。对于服务器上不存在的网页或某些错误的路由会返回此状态码,服务器应该指定错误页面。
- 405(方法禁用) 禁用请求中指定的方法。
- 406(不接受) 无法使用请求的内容特性响应请求的网页。
- 407(需要代理授权) 此状态码与 401 类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
- 408(请求超时) 服务器等候请求时发生超时。
- 409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。
- 410(已删除) 请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久删除,应当使用 301 指定资源的新位置。
- 411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
- 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
- 413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
- 414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。不同的浏览器和服务器对URL的长度、大小支持有差异。
- 415(不支持的媒体类型) 请求的格式不受请求页面的支持。
- 416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态码。
- 417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。
500-505:服务器在尝试处理请求时发生内部错误。通常是服务器本身的错误,而不是请求出错。
- 500(服务器内部错误) 服务器遇到错误,无法完成请求。
- 501(尚未实施) 服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
- 502(错误网关) 服务器作为网关或代理,从上游服务器收到了无效的响应。
- 503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。
- 504(网关超时) 服务器作为网关或代理,未及时从上游服务器接收请求。
- 505(HTTP 版本不受支持) 服务器不支持请求中所使用的 HTTP 协议版本。
MDN:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
二、WebSocket断开状态码 1006...
WebSocket断开时,会触发事件 CloseEvent 。CloseEvent会在连接关闭时发送给使用 WebSockets 的客户端. 它在 WebSocket 对象的 onclose 事件监听器中使用。
CloseEvent有三个字段需要注意, 通过分析这三个字段,一般就可以找到断开原因
-
- CloseEvent.code code是错误码,是整数类型
- CloseEvent.reasonreason是断开原因,是字符串
- CloseEvent.wasCleanwasClean表示是否正常断开,是布尔值。一般异常断开时,该值为false。
一般来说1006
的错误码出现的情况比较常见,该错误码一般出现在断网时。
0–999 | 保留段, 未使用. | |
1000 | CLOSE_NORMAL | 正常关闭; 无论为何目的而创建, 该链接都已成功完成任务. |
1001 | CLOSE_GOING_AWAY | 终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开. |
1002 | CLOSE_PROTOCOL_ERROR | 由于协议错误而中断连接. |
1003 | CLOSE_UNSUPPORTED | 由于接收到不允许的数据类型而断开连接 (如仅接收文本数据的终端接收到了二进制数据). |
1004 | 保留 . 其意义可能会在未来定义. |
|
1005 | CLOSE_NO_STATUS | 保留 . 表示没有收到预期的状态码. |
1006 |
CLOSE_ABNORMAL | 保留 . 用于期望收到状态码时连接非正常关闭 (也就是说, 没有发送关闭帧). |
1007 | Unsupported Data | 由于收到了格式不符的数据而断开连接 (如文本消息中包含了非 UTF-8 数据). |
1008 | Policy Violation | 由于收到不符合约定的数据而断开连接. 这是一个通用状态码, 用于不适合使用 1003 和 1009 状态码的场景. |
1009 | CLOSE_TOO_LARGE | 由于收到过大的数据帧而断开连接. |
1010 | Missing Extension | 客户端期望服务器商定一个或多个拓展, 但服务器没有处理, 因此客户端断开连接. |
1011 | Internal Error | 客户端由于遇到没有预料的情况阻止其完成请求, 因此服务端断开连接. |
1012 | Service Restart | 服务器由于重启而断开连接. |
1013 | Try Again Later | 服务器由于临时原因断开连接, 如服务器过载因此断开一部分客户端连接. |
1014 | 由 WebSocket标准保留以便未来使用. | |
1015 | TLS Handshake | 保留. 表示连接由于无法完成 TLS 握手而关闭 (例如无法验证服务器证书). |
1016–1999 | 由 WebSocket标准保留以便未来使用. | |
2000–2999 | 由 WebSocket拓展保留使用. | |
3000–3999 | 可以由库或框架使用.不应由应用使用. 可以在 IANA 注册, 先到先得. | |
4000–4999 | 可以由应用使用. |
MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent