常见HTTP状态码含义解析

每一个HTTP状态码都属于五大类别之一,只要记住类别代表的含义,大多数具体状态码就不难理解了。

2xx表示请求成功

200 OK是最常见的成功响应,201 Created表示新建资源(比如新账号或新帖子)成功,204 No Content表示请求成功但没有内容需要返回。

3xx表示请求被重定向到别处

301 Moved Permanently告诉浏览器和搜索引擎某个网址已永久迁移,302 Found表示这是一次临时性跳转,304 Not Modified则告诉浏览器本地缓存的内容仍然有效。

400、401、403代表请求本身出了问题

400 Bad Request表示请求格式有误,401 Unauthorized表示需要先登录或验证身份,403 Forbidden表示身份已确认但没有权限访问,这与401是两个不同的问题。

404和410都表示页面不存在

404 Not Found是最常见的"页面不存在"提示,较少见的410 Gone则明确表示该页面曾经存在,但已被永久性主动删除。

429表示请求过于频繁被限流

服务器判断你的请求次数过多,暂时拒绝继续处理,通常是为了防止滥用或过载,响应中有时还会提示需要等待多久再重试。

5xx代表问题出在服务器一侧

500 Internal Server Error是最通用的服务器故障提示,502 Bad Gateway和503 Service Unavailable通常意味着上游服务器或网站本身暂时不可用或过载,504 Gateway Timeout则表示服务器等待另一台服务器响应超时。

为什么状态码要按百位数分类

状态码的第一位数字就能直接说明它属于哪一大类:1xx是信息性响应,2xx是成功,3xx是重定向,4xx是客户端问题,5xx是服务器问题。这样即使遇到从没见过的具体数字,也能靠首位数字大致判断问题出在哪一方。

状态码也会影响浏览器和搜索引擎的行为

301永久重定向会把原网页积累的搜索排名权重大部分转移到新网址,而302临时重定向则会让排名继续留在原网址,这一区别在网站迁移时格外重要;浏览器的缓存策略同样取决于服务器返回的是哪一个2xx或3xx状态码。

常见问题

401和403有什么区别?

401通常表示服务器还不知道你是谁,需要先登录验证身份;403则表示服务器已经确认了你的身份,但判定你没有权限访问该内容。

平时正常的网站为什么偶尔会出现502或503?

这通常是暂时性问题,比如服务器正在重启、访问量过大导致过载,或者它依赖的后端服务暂时无法响应,而不是网站永久性的故障。

页面不存在是不是都应该用404?

404是最常用的标准做法,不过有些网站会针对确定被永久移除的页面专门返回410 Gone,这样能给搜索引擎更明确的信号。