曾经面试被问到过状态码401代表什么,我没有答上来,典型的没有好好背书

你好,我是风一样的树懒,一个工作十多年的后端开发,曾就职京东、阿里等多家互联网头部企业。

点击下方👇关注公众号,带你一起复习后端技术,看看面试考点,补充积累技术知识,每天都为面试准备积累

我曾经面试有被问到过,401是什么意思,我没有答出来,虽然不是个不知名的公司,但是总觉得因为401没答上来,这样简单的问题有些遗憾。下面我们我们一起来复习一下这些Code码吧。

01
401 状态码


HTTP 状态码 401 代表 "Unauthorized"(未授权)。

含义:当客户端向服务器请求访问受保护的资源时,服务器会返回 401 状态码,表示客户端请求缺少有效的身份验证凭证,或者提供的凭证无效。这个状态码通常出现在以下场景:

  • 缺少认证信息:客户端在请求时没有提供用户名、密码或者 API 密钥等认证凭证。

  • 凭证无效:提供的认证信息可能是错误的、过期的或者不再有效。

  • 需要进行认证:服务器期望客户端提供认证信息,如 Basic Authentication 或者 OAuth 令牌等。


一般响应内容:

响应中通常会包含一个 WWW-Authenticate 头,指示客户端如何提供认证信息。例如:

HTTP/1.1 401 UnauthorizedWWW-AuthenticateBasic realm="Example"

这意味着服务器要求客户端提供用户名和密码以通过 Basic 认证。

常见场景:

  • Basic Authentication:客户端需要提供用户名和密码作为凭证。

  • Bearer Token:客户端需要提供 OAuth2 访问令牌。

  • API 认证失败:API 请求缺少有效的认证头信息。

如何解决:

  • 确保在请求中提供了正确的认证信息。

  • 检查认证凭证是否有效。

  • 如果是登录相关的认证,确保用户名和密码正确。

示例:

假设你正在通过浏览器访问一个需要身份验证的网页,没有提供正确的登录信息,服务器会返回如下的响应:

HTTP/1.1 401 UnauthorizedWWW-AuthenticateBasic realm="My Protected Area"

这会提示用户输入有效的用户名和密码。


02
2xx 类:成功


这些状态码表示请求已成功处理。

  • 200 OK:请求已成功,并且服务器返回了请求的资源。

    例如:GET 请求成功,服务器返回数据。

  • 201 Created:请求已成功,并且服务器创建了新的资源。

    例如:POST 请求创建了一个新的资源。

  • 202 Accepted:请求已接受,但尚未处理完成。通常用于异步操作。

  • 204 No Content:请求成功,但没有返回内容。

    例如:DELETE 请求成功执行,但没有返回任何数据。

03
3xx 类:重定向


这些状态码表示客户端需要采取进一步的操作来完成请求。

  • 301 Moved Permanently:请求的资源已被永久移动到新位置。响应应该包含 Location 头指示新位置。

  • 302 Found (临时重定向):请求的资源临时移动,客户端应使用新的 URL,但未来可能会恢复到旧的 URL。

  • 303 See Other:响应内容应该从另一个 URI 获取。通常与 POST 请求结合使用,告知客户端重定向到 GET 请求。

  • 304 Not Modified:资源未修改,客户端可以使用缓存的版本。

  • 307 Temporary Redirect:请求临时重定向,客户端应该使用相同的 HTTP 方法重新请求。

  • 308 Permanent Redirect:请求的资源已永久重定向,客户端使用新 URL。


04
4xx 类:客户端错误


这些状态码表示客户端请求有问题,服务器无法处理。

  • 400 Bad Request:服务器无法理解客户端请求的格式,通常是请求无效或参数错误。

  • 401 Unauthorized:未授权,客户端请求缺少有效的身份验证凭证。

  • 403 Forbidden:服务器理解客户端请求,但拒绝执行。客户端没有权限访问该资源。

  • 404 Not Found:请求的资源不存在,服务器无法找到匹配的资源。

  • 405 Method Not Allowed:请求方法不被允许,例如尝试使用 POST 请求访问只支持 GET 的资源。

  • 408 Request Timeout:请求超时,客户端请求未能在服务器等待的时间内完成。

  • 409 Conflict:请求无法完成,通常是由于资源冲突(如版本冲突、重复提交等)。

  • 413 Payload Too Large:请求体太大,服务器无法处理。

  • 414 URI Too Long:请求的 URI 太长,服务器无法处理。

  • 415 Unsupported Media Type:请求的媒体类型不受支持,例如上传了服务器不支持的文件格式。

  • 429 Too Many Requests:客户端发送了过多的请求,通常是为了防止滥用或限制访问频率。


05
5xx 类:服务器错误


这些状态码表示服务器端出现问题,导致无法处理有效的请求。

  • 500 Internal Server Error:服务器遇到未预料的情况,导致无法完成请求。

  • 501 Not Implemented:服务器不支持请求中所需的功能或方法。

  • 502 Bad Gateway:服务器作为网关或代理时,收到无效响应。

  • 503 Service Unavailable:服务器当前无法处理请求,通常是由于过载或维护。

  • 504 Gateway Timeout:服务器作为网关或代理时,未能在规定时间内从上游服务器获取响应。

  • 505 HTTP Version Not Supported:服务器不支持请求中指定的 HTTP 版本。


06
其他常见状态码:


  • 418 I'm a teapot:这是一个愚弄性的 HTTP 状态码,来源于 April Fools' Day 的一个 RFC (RFC 2324)。其描述是服务器是一个茶壶,因此不能处理冲泡茶的请求。

  • 419 Authentication Timeout:通常指会话超时,可能是在表单提交后会话过期。

  • 426 Upgrade Required:请求要求服务器升级协议,客户端需要使用更高版本的协议进行连接。

通常我们做服务治理与监控的时候,会对nginx中的code进行收集,这些特定的一些code还是需要提高警觉的,如400、404、502、504等。


今天的内容就分享到这儿,喜欢的朋友可以关注,点赞。有什么不足的地方欢迎留言指出,您的关注是我前进的动力!


END


扫码关注

一起积累后端知识
不积跬步,无以至千里
不积小流,无以成江海

喜欢此内容的人还喜欢

谈谈id那些事(五)——美团的 Leaf 的ID生成


一个阿里二面面试官必问的问题


Lambda表达式说爱你不容易


分享面试:mysql数据库索引失效的情况


Spring-Boot中一个不起眼的好工具StopWatch