当前位置: 首页 > news >正文

Web开发:什么是 HTTP 状态码?

一、什么是 HTTP 状态码?

在这里插入图片描述

HTTP 状态码是当客户端(如浏览器)向服务器发出请求时,服务器返回的一个三位数字代码。它代表了服务器对请求的处理结果,是客户端判断请求成功与否、以及下一步该如何操作的主要依据。

状态码的第一个数字定义了响应的类别,共有 5 类:

分类描述含义
1xx信息性状态码请求已被接收,继续处理。
2xx成功状态码请求已成功被服务器接收、理解并接受。
3xx重定向状态码需要客户端采取进一步的操作才能完成请求。
4xx客户端错误状态码请求含有语法错误或无法完成。
5xx服务器端错误状态码服务器在处理一个看似有效的请求时发生错误。

二、常见和重要的 HTTP 状态码详解

在这里插入图片描述

下面我们按类别列出一些最常见和最重要的状态码。

1xx - 信息性状态码

这类状态码比较少见,通常表示请求已被接受,需要继续处理。

  • 100 Continue:客户端应继续发送请求的剩余部分。常用于客户端发送较大数据(如文件上传)前,先询问服务器是否接受。
  • 101 Switching Protocols:客户端要求服务器切换协议,服务器已同意切换。例如,从 HTTP 切换到 WebSocket。
2xx - 成功状态码

表示请求已成功处理。

  • 200 OK最常见的成功状态码。表示请求成功,响应报文中包含了请求的资源(如 HTML 页面、图片等)。
  • 201 Created:请求成功,并且服务器创建了新的资源(通常在 POST 或 PUT 请求之后)。响应头 Location 字段通常会包含新资源的 URL。
  • 204 No Content:请求成功,但响应报文中没有实体主体(不返回任何内容)。常见于 DELETE 请求或只需成功执行但无需返回数据的 AJAX 请求。
3xx - 重定向状态码

表示浏览器需要执行额外的操作(通常是再次发送一个新请求)来完成最初的请求。

  • 301 Moved Permanently永久重定向。请求的资源已被永久分配了新的 URI。今后任何对此资源的引用都应使用新的 URI。搜索引擎会将权重转移到新URL。
  • 302 Found临时重定向。请求的资源临时从不同的 URI 响应请求。由于历史原因,它有时被不准确地解释为 “Moved Temporarily”。客户端应继续使用原始 URI 进行未来的请求。
  • 304 Not Modified资源未改变。当客户端发送带条件的 GET 请求(例如 If-Modified-Since 头)时,如果资源自指定时间后未被修改,服务器会返回此状态码,告诉客户端直接使用本地缓存。这可以节省带宽和提高加载速度。
4xx - 客户端错误状态码

表示错误似乎是来自客户端的原因。

  • 400 Bad Request错误的请求。服务器无法理解请求的格式,通常是语法错误(如错误的请求结构、无效的请求消息帧)。
  • 401 Unauthorized未授权。请求需要用户认证。通常伴随着 WWW-Authenticate 头,指示如何进行认证。注意,这个名字容易引起误解,它实际指的是“认证”(Authentication)失败,而非“授权”(Authorization)。
  • 403 Forbidden禁止访问。服务器理解请求,但拒绝执行。与 401 不同,服务器知道你的身份,但你的权限不足。例如,尝试访问没有权限的目录或文件。
  • 404 Not Found最著名的错误码。服务器找不到请求的资源。也可能是服务器不想告诉你为什么拒绝请求,或者没有其他响应可用。
5xx - 服务器端错误状态码

表示服务器在处理请求时发生了错误。

  • 500 Internal Server Error服务器内部错误。一个通用的错误消息,表示服务器遇到了一个未曾预料的状况,导致它无法完成对请求的处理。通常是服务器端应用程序(如 PHP, Java)代码出错。
  • 502 Bad Gateway错误的网关。服务器作为网关或代理,从上游服务器收到了无效的响应。常见于 Nginx 后面的 PHP-FPM 或后端应用服务器崩溃或没有响应。
  • 503 Service Unavailable服务不可用。服务器当前无法处理请求(由于超载或系统停机维护)。通常,这是临时状态。响应中可能会包含 Retry-After 头,告诉客户端何时可以重试。
  • 504 Gateway Timeout网关超时。服务器作为网关或代理,未能及时从上游服务器收到响应。这通常意味着后端服务器在处理请求时花费了太长时间。

三、如何查看和使用状态码

  1. 开发者工具:在浏览器中按 F12 打开开发者工具,进入 “Network”(网络) 标签页。刷新页面,你会看到所有网络请求,其中 “Status” 列就是 HTTP 状态码。
  2. 命令行工具:使用 curl 命令时,可以添加 -I-i 选项来查看响应头和信息。
    curl -I https://www.example.com
    
  3. 后端调试:在后端代码中,你可以设置返回特定的状态码(例如,在 Node.js 中用 res.status(404).send(...),在 PHP 中用 http_response_code(404))。

四、总结与最佳实践

  • 对用户友好:对于 4xx 和 5xx 错误,最好配置一个自定义错误页面,而不是显示默认的浏览器错误页,以提供更好的用户体验。
  • 正确使用重定向:理解 301 和 302 的区别,对 SEO 和浏览器缓存行为有重要影响。
  • 善用缓存:正确使用 304 状态码可以极大提升网站性能,减少服务器负载。
  • 监控 5xx 错误:5xx 错误是服务器健康度的晴雨表,需要被持续监控和及时处理。

掌握 HTTP 状态码能帮助你快速定位和解决问题,是 Web 开发和运维的一项基础且重要的技能。

http://www.dtcms.com/a/605506.html

相关文章:

  • idea启动项目配置环境变量(nacos 命名空间)
  • win8风格 网站模板免费的logo在线设计
  • 鸿蒙ArkUI基础组件开发详解
  • 温江建设网站家庭装修报价明细预算表
  • 目前最新同花顺金融股市数据爬取 JS逆向+node.js补浏览器环境
  • UniApp RenderJS中集成 Leaflet地图,突破APP跨端开发限制
  • 【MySQL】SQL菜鸟教程(一)
  • 网站开发net教程中国世界排名变化
  • InvivoCrown丨艾美捷代理(货号:SIM0073)BioSIM抗人ActivinA抗体(加托索单抗生物类似药)研究级精准靶向,赋能转化医学研究
  • 设计网站公司选泽y湖南岚鸿询 问10元建站
  • 节点内 cuda GPU 之间 P2P IPC 通信的硬件机制参考
  • 基于ThinkPHP实现动态ZIP压缩包的生成
  • 一个网站里面只放一个图片怎么做展示商品的网站怎么做
  • vivo国产数据库技术储备,突破大规模数据的存储与性能瓶颈
  • LLM之Agent(二十八)|AI音视频转笔记方法揭秘
  • 在Electron应用中控制剪贴板操-复制粘贴
  • IOS如何免费申请开发者证书(uniapp开发)
  • 网站里的动效怎么做国家重点项目建设网站
  • 《MySQL进阶(十一):集群架构与实践专题(一)》
  • github修改用户名和密码
  • 【数据结构入门手札】数据结构基础:从数据到抽象数据类型
  • Redis 大 Key 深度解析:危害、检测与治理实践
  • 最新电子商务购物商城系统源码 三端/H5+微信+安卓
  • MathPrompter:大幅提升大模型数学推理能力的创新方法
  • 如何在团队士气低落时重建信任与动力
  • SAP FICO应收毛利表分享
  • php音乐外链网站源码石家庄自助建站软件
  • Modbus RTU 转 Modbus TCP:借助数据采集提升罗克韦尔PLC工艺参数反馈实时性案例
  • 上海网站推广排名公司甘肃交通建设监理公司网站
  • 【服务器】查看IIS上某个网站的当前连接数