第四章----返回结果的 HTTP状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务端的处理是否正常、通知出现的错误等工作。让我们通过本章的学习,好好了解一下状态码的工作机制。

4.1、状态码告知从服务器返回的请求结果
状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器是正常处理了请求,还是出现了错误。
在这里插入图片描述
状态码如 200 OK,以 3 位数和原因短语组成。
数字中的第一位指定了响应类别,后两位无分类。响应类别有一下 5 种。
在这里插入图片描述
4.2、2XX 成功
2XX 的响应结果表明请求被正常处理了。

4.2.1、200 OK
在这里插入图片描述
表示从客户端发来的请求在服务端被正常处理了。
在响应报文内,随状态码一起返回的信息会因为方法的不同而发生改变。比如,使用 GET 方法时,对应请求资源的实体会作为响应;而使用 HEAD 方法时,对应请求资源的实体首部不随报文主体作为响应返回(即在响应中只返回首部,不会返回实体的主体部分)。

4.2.2、204 No Content
在这里插入图片描述
该状态码代表服务器的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面不会发生更新。

4.2.3、206 Partial Content
在这里插入图片描述
该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。响应报文包含由 Content-Range 指定范围的实体内容。

总而言之
2XX 表示服务器已经成功处理请求。但是处理结果和格式则是由后两位来判定。比如,无响应主体,只有响应头部信息;有响应主体和响应头部信息,但是响应主体是部分的范围请求;有响应主体和响应头部信息,且响应主体是完整的;等等…
根据客户端请求方法以及请求头部字段信息的不同,从而服务器处理成功后所给状态码所表示的意义也不尽相同。

4.3、3XX 重定向
3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

4.3.1、301 Moved Permanently(永久性的被移动了)
在这里插入图片描述
永久性重定位。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。

4.3.2、302 Found
临时性重定位。该状态码表示请求的资源已被分配了新的 URI,希望客户端本次能使用新的 URI 访问。
和 301 Moved Permanently 状态码相似,但 302 状态码代表的资源不是永久性移动,只是临时性质的。换句话说,已移动的资源对应的 URI 将来还有可能发生改变。

4.3.3、303 See Other
在这里插入图片描述
该状态码表示由于请求对应的资源存在另一个 URI,应使用 GET 方法定向获取请求资源。
303 状态码和 302 状态码虽然有着相同的功能(表示资源被临时移动),但 303 状态码表明客户端应该更换为 GET 请求方式获取资源。

4.3.4、304 Not Modified(没有被修改)
在这里插入图片描述
该状态表示客户端发送附带条件的请求(字段为 if 开头)时,服务器允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

总而言之
3XX 大体表示服务器资源 URI 已被更换。至于是永久性或则暂时性,则由后两位状态码来表示。
至于说是大体表示服务器资源 URI 已被更换,这是因为存在一个特例状态码, 304 用来表示服务器资源未被修改,一般是 http 缓存中协商缓存时,客户端所发的协商请求所返回状态码

4.4、4XX 客户端错误
4XX 的响应结果表明客户端是发生错误的原因所在。

4.4.1、400 Bad Request(错误请求)
在这里插入图片描述
该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。(此时需要查看我们请求报文中请求体的请求信息是否存在语法、格式【非 JSON 格式】错误)。

4.4.2、401 Unauthorized(未认证)
在这里插入图片描述
该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST认证)的认证信息。另外若之前已进行过 1 次请求,则表示用户认证失败。
返回有 401 的响应必须包含一个适用于被请求资源的 www-Authenticate 首部用以咨询用户信息。当浏览器初次接收到 401响应,会弹出认证用的对话窗口。

4.4.3、403 Forbidden(禁止的)
在这里插入图片描述
该状态码表明请求资源的访问被服务器拒绝了。服务器没有必要给出拒绝的详细理由,但如果想作说明的话,可以在响应报文实体的主体部分对原因进行描述,这样就能让用户看见。
未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。

4.4.4、404 Not Found(没有发现)
在这里插入图片描述
该状态表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

4.4.5、405 Method Not Allowed(HTTP 请求方法不支持)
该状态表示服务器不支持此次客户端请求方法,并且会以状态码 405 Method Not Allowed 作为响应返回。于此同时,还会把所有能支持的 HTTP 方法写入实体首部字段 Allow 后返回。

4.4.6、412 Precondition Failed(前提条件失败)
该状态表示客户端发起了 If-xxx 条件请求,且其中一个条件失败了的时候使用。

总而言之
4XX 代表的是客户端相关错误。错误可能是,请求方法出错、请求参数格式错误、请求必选字段为填、请求路径出错、请求 urI 未认证、权限不足、请求条件失败等…

4.5、5XX 服务器错误
5XX 的响应结果表明服务器本身发生错误。

4.5.1、500 Internal Server Error(内部服务器错误)
在这里插入图片描述
该状态码表明服务端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障。

4.5.2、503 Service Unavailable(服务器不可用)
在这里插入图片描述
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入 Retry-After 首部字段再返回给客户端。

4.5.3、504 Gateway Timeout (网关超时)
该状态码表示,代理服务器向资源源服务器请求本地缓存是否有效,但是链接未连通。此时,代理服务器则会向客户端返回状态码 504 表示网关请求超时。(注意:网关也是代理服务器的一种)

总而言之
5XX 表明服务器端错误。错误可能,是内部处理逻辑 bug 、服务器暂停服务等…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值