首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【建议收藏】HTTP状态码大全

在互联网的广袤世界里,当你在浏览器地址栏输入网址,按下回车键的瞬间,一场数据交互的 “大戏” 便悄然上演。超文本传输协议(HTTP)在客户端(比如浏览器)与服务器之间架起了沟通的桥梁,实现网页浏览、数据交互等功能。

HTTP 状态码基础概念

HTTP 状态码是服务器响应的一种三位数字代码 ,由 HTTP/1.0 协议定义。这三位数字可别小瞧,第一个数字定义了响应的类别,后面两位则进一步细化信息。通过状态码,客户端能快速知晓请求到底是成功了,还是在哪个环节出了岔子。

常见 HTTP 状态码分类解析

1xx(信息类):服务器收到请求,需要请求者继续执行操作

这类状态码在实际应用中出现频率相对较低。其中 100 Continue 比较典型,当客户端向服务器发送较大的请求(比如上传大文件、提交长表单)时,先发送一个包含部分请求头的初始请求,服务器如果返回 100 Continue,就表示客户端可以继续发送请求的其余部分。举个例子,你要给服务器传输一个 500MB 的文件,不可能一下子全发过去,先试探性地发个请求头问服务器 “我能发文件啦,你准备好接收没?”,服务器回个 100 Continue,就等于说 “来吧,我准备好接收你的大文件了” 。

2xx(成功类):请求正常处理完毕

200 OK

:这是最常见的成功状态码了,意味着从客户端发来的请求被正常处理了 。当你在浏览器访问一个网页,看到页面正常加载出来,背后大概率就是服务器返回了 200 OK 状态码。无论是获取网页内容、查询数据库数据等操作,只要一切顺利,都可能收到这个状态码。

204 No Content

:表示客户端的请求处理成功,但响应报文不包含实体的主体部分 。比如一些执行删除操作的接口,成功删除数据后,不需要返回具体数据内容给客户端,就可能返回 204。就好比你让服务器删除一个不再需要的文件,服务器删完告诉你 “搞定啦,但是没东西给你看” 。

206 Partial Content

:客户端进行了范围请求(比如请求一个大视频文件的某一段),服务器成功执行了这部分的请求,响应报文中包含指定范围内的实体部分 。比如你看在线视频,拖动进度条从第 10 分钟跳到第 15 分钟,服务器就会根据你的这个范围请求,返回这 5 分钟视频对应的那部分数据,状态码就是 206 。

3xx(重定向类):要完成请求,需要进一步操作,通常是需要客户端进行额外的访问

301 Moved Permanently(永久重定向)

:表示所请求的资源已经永久地转移到新的位置,这包含域名的改变或者是资源路径的改变 。比如一个网站更换了域名,从 “olddomain.com” 换成了 “newdomain.com”,为了让之前收藏了旧域名的用户还能正常访问,就可以设置 301 重定向,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。从 SEO(搜索引擎优化)角度看,它有助于将旧域名的权重传递到新域名 。

302 Found(临时重定向)

:表示所请求的资源临时地转移到新的位置,一般是 24 到 48 小时以内的转移会用到 302 。不过不提倡使用 302,因为它存在安全隐患,比如可能导致 URL 劫持。从网址 A 做 302 重定向到网址 B 时,由于它是临时的,搜索引擎可能仍然显示网址 A,但实际内容却是网址 B 的,这就给了不法分子可乘之机。

303 See Other

:和 302 有相同的功能,但 303 明确表示客户端应当使用 GET 方法获取资源,这点和 302 有区别 。例如,当用户提交表单后,服务器可能返回 303,让客户端通过 GET 方式跳转到另一个页面查看结果。

304 Not Modified

:客户端发送附带条件的请求时(一般指 GET 方法),服务端允许访问,但因为请求的条件不满足,直接返回 304,虽然 304 被分在 3XX 类别中,但是和重定向没有关系 。比如客户端浏览器缓存了一个网页,再次请求时带上了缓存的时间戳等信息,服务器检查发现网页内容没有更新,就返回 304,告诉浏览器 “你用缓存的就行,不用重新下载” 。

307 Temporary Redirect(临时重定向)

:和 302 有相同的意义,但是区别在于 307 不会改变客户端的请求方式 。如果客户端原本是 POST 请求,重定向后依然会以 POST 方式访问新地址。

4xx(客户端错误类):服务器无法处理此次请求,问题出在客户端

400 Bad Request

:表示请求报文中存在语法错误 。比如你向服务器发送一个请求,请求的格式不符合 HTTP 协议规定,服务器就会返回 400。例如,你在构建一个 API 请求时,参数格式写错了,像把应该是数字类型的参数写成了字符串,就可能触发这个状态码。

401 Unauthorized

:表示发送的请求需要通过 HTTP 认证的认证信息,如果已经进行过一次 401 请求,则表示用户认证失败 。当你访问一些需要登录的网站或接口,没有提供正确的用户名和密码,就会收到这个状态码。它就像是网站的 “保安”,拦住没有通行证的你,告诉你 “请先出示正确证件(登录信息)” 。

403 Forbidden

:表示客户端请求资源的访问被服务器拒绝了 。和 401 不同,403 不是因为没登录,而是即使登录了,你的权限也不够访问该资源。比如一个普通用户尝试访问管理员才能查看的后台数据,就会被服务器以 403 拒绝,这是服务器在说 “你没权限,不能看这个” 。

404 Not Found

:这应该是大家最熟悉的状态码之一了,表示服务器上无法找到请求的资源 。你在浏览器输入一个错误的网址,或者网站上某个页面被删除了,访问时就会看到 404 页面。就好比你去图书馆找一本书,结果图书馆里根本没有这本书,管理员就会告诉你 “没找到你要的书(资源)” 。

5xx(服务器错误类):服务器处理请求出错

500 Internal Server Error

:服务器在执行的时候发生了错误 。这个状态码意味着服务器内部出问题了,可能是代码有 bug、数据库连接出错等各种服务器端的故障。比如一个网站突然打不开,显示 500 错误,那很可能是网站的服务器端程序在运行过程中遇到了意外情况,无法正常处理请求。

502 Bad Gateway

:通常出现在代理服务器(比如 Nginx 作为反向代理)场景中,表示代理服务器从上游服务器(比如后端的应用服务器)接收到了一个无效的响应 。可以想象成你去一个中介机构办事,中介机构去联系真正能办事的部门,结果那个部门给了中介一个错误的回复,中介只能把这个错误反馈给你(客户端)。

503 Service Unavailable

:表示服务器当前无法处理请求,通常是因为服务器过载或者正在维护 。就像一家餐厅生意太火爆,服务员忙不过来,或者餐厅正在装修暂停营业,这时顾客上门,就会被告知 “暂时无法接待您(服务器不可用)” 。

HTTP 状态码在实际中的应用场景与排查思路

应用场景

网站优化与维护

:网站改版时,如果页面路径发生变化,合理使用 301 重定向能确保用户和搜索引擎顺利找到新页面,保障网站流量和 SEO 不受影响;而在网站临时调整部分功能时,可能会用到 302 临时重定向 。

API 开发与调用

:API 接口根据不同的请求处理结果返回相应状态码,客户端根据状态码判断操作是否成功。例如,在一个电商 API 中,用户下单成功返回 200,库存不足导致下单失败返回 400 等,便于前端应用准确处理各种情况 。

故障排查

:当网站出现访问异常时,通过分析 HTTP 状态码能快速定位问题所在。如果是 404,就检查页面是否真的被删除或路径写错;如果是 500,就要排查服务器端代码和环境问题 。

排查思路

当遇到 4xx 状态码

:先检查客户端请求,确认请求格式是否正确,参数是否符合要求,登录信息是否准确等。如果是 403,进一步确认用户权限设置是否合理 。

当遇到 5xx 状态码

:从服务器端入手,查看服务器日志,检查代码是否有异常,数据库连接是否正常,服务器资源(如 CPU、内存)是否过载等 。

HTTP 状态码是网络世界中非常重要的 “语言”。对于 IT 运维人员、开发者以及广大网络用户来说,了解常见的 HTTP 状态码,在开发过程中优化应用、日常使用网络应用时排查故障等方面都大有用处。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyZXEpSwmwa7dz2fe6I8N2Dg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券