HTTP响应码,大详解

article/2025/9/1 3:52:02

1.HTTP的正确响应码  

        一、1XX (1开头)

请求已经被接收到了,需要进一步处理才能完成,HTTP1.0不支持;

  • 100 Continue 上传大文件前先让服务器准备,由客户端发起请求中携带Except:100-continue 头部触发
  • 101 Switch Protocols协议升级使用,由客户端发起的请求中携带Upgrade头部,如升级WebSocket/http2.0
  • 102 Processing WebDev请求可能包含许多涉及文件操作的子请求,等待很长时间才能完成子请求,该代码表示服务器已经收到并正在处理请求,但无响应可用,这样可以防止客户端超时,并假设请求丢失。

        二、2xx(2开头)

成功处理请求

  • 200 OK:成功返回响应
  • 201 Created:有新资源在服务器端被成功创建
  • 202 Accept:服务器接收并开始处理请求,但请求未处理完成,这样一个模糊的概念是有意如此设计,可以覆盖更多的场景。例如异步,需要长时间处理的任务
  • 203 Non-Authoritative Information:当代理服务器修改了origin-serve的原始响应包体时(例如更换了HTML中的元素值),代理服务器可以通过修改200为203的方式告知客户端这一事实,方便客户端为这一行为作出相应的处理,203响应可以被缓存
  • 204 No Content:成功执行了请求且不携带响应包体,并暗示客户端无需更新当前的页面视图
  • 205 Reset Content:成功执行了请求且不携带响应包体,同时指明客户端需要更新当前页面视图
  • 206 Partial Content:使用Range协议时返回部分响应内容时的响应码(多线程断点下载)
  • 207 Multi-Status:RFC4918 在WebDev协议中以XML返回多个资源的状态
  • 208 Already Reported:RFC5842 ,为避免相同集合下资源在207响应码下重复上报,使用208可以使用父集合的响应码

        三、3xx(3开头)

重定向使用Location指向的资源或者缓存中的资源。在RFC2068中规定客户端的重定向次数不应该超过5次,以防止死循环

  • 300 Multiple Choices:资源有多种表述,通过300返回给客户端后由其自行选择访问哪一种表述。由于缺乏明确的细节,300很少使用
  • 301 Moved Permanently:资源永久性的重定向到另一个URI中(浏览器可以缓存)
  • 302 Found:资源临时的重定向到另一个URI中
  • 303 See Other:重定向的其它资源,常用于post/put等方法的响应中
  • 304 Not Modified:当客户端拥有可能过期的缓存时,会携带缓存的标识etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以复用缓存
  • 307 Temporary Redirect:类似302 ,但明确重定向后请求方法必须与原请求方法相同,不得改变
  • 308 Permanent Redirect:类似301,但明确重定向后请求方法必须与原请求方法相同,不得改变

2.HTTP的错误响应码

        四、4xx(4开头)

  • 400 Bad Request:服务器认为客户端出现了错误,但不能明确判断为以下哪种错误时使用此错误码。例如HTTP请求格式错误
  • 401 Unauthorized:用户认证信息缺失或者不正确,导致服务器无法处理请求
  • 407 Proxy Authentication Required:对需要经由代理的请求,认证信息未通过代理服务器的验证
  • 403 Forbidden:服务器理解请求的含义,但没有权限执行此请求,比如请求某个服务端目录下的音视频资源
  • 404 Not Found:服务器没有找到对应的资源
  • 410 Gone:服务器没有找到对应的资源,且明确的知道该位置永久性找不到该资源
  • 405 Method Not Allowed:服务器不支持请求行中的method方法
  • 406 Not Acceptable:对客户端指定的资源表述不存在(例如对语言或者编码有要求),服务器返回列表供客户端选择
  • 408 Request Timeout:服务器接收请求超时
  • 409 Conflict:资源冲突,例如上传文件时目标位置已经存在版本更新的资源
  • 411 Length Required:如果请求包含有包体且未携带Content-Length头部,且不属于chunk类请求时,返回411
  • 412 Precondition Failed:复用缓存时传递的If-Unmodified-Since或If-None-Match头部不被满足
  • 413 Payload Too Large/Request Entity Too Large:请求的包体超出服务器能处理的最大长度
  • 414 URI Too Long:请求的URI超出服务器能接受的最大长度
  • 415 Unsupported Media Type:上传的文件类型不被服务器支持
  • 416 Range Not Satisfiable:无法提供Range请求中指定的那段包体
  • 417 Expectation Failed:对于Expect 请求头部期待的情况无法满足时的响应码
  • 421 Misdirected Request:服务器认为这个请求不该发送给它,因为它没有能力处理
  • 426 Upgrade Required:服务器拒绝基于当前HTTP协议提供服务,用过Upgrade头部告知客户端必须升级协议才能继续处理
  • 428 Precondition Required:用户请求中缺失了条件类头部,例如If-match
  • 429 Too Many Requests:客户端发送请求的速率过快
  • 431 Request Header Field Too Large:请求的HEADER 头部大小超过限制
  • 451 Unavailable For Legal Reasons:RFC7725,由于法律原因资源不可访问

        五、5xx(5开头)

服务器端出现错误

  • 500 Internal Server Error:服务器内部错误,且不属于以下错误类型
  • 501 Not Implemented:服务器不支持实现请求所需要的功能
  • 502 Bad Gateway:代理服务器无法获取到合法响应
  • 503 Service Unavailable:服务器资源尚未准备好处理当前请求(例如服务端限流)
  • 504 Gateway Timeout:代理服务器无法及时的从上游获得响应
  • 505 HTTP Version Not Support:请求使用的HTTP协议版本不支持
  • 507 Insufficient Storage:服务器没有足够的空间处理请求
  • 508 Loop Detected:访问资源时检测到循环
  • 511 Network Authentication Required:代理服务器发现客户端需要进行身份验证才能获得网络访问权限

 


http://chatgpt.dhexx.cn/article/4RMIr2jX.shtml

相关文章

HTTP 响应码大全

HTTP 状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC2616 规范定义的,并得到 RFC2518、RFC2817、RFC2295、RFC2774 与 RFC4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的…

【从零开始学架构-李运华】06|复杂地来源:可扩展性

可扩展性指系统为了应对将来需求的变化而提供的一种扩展能力,新需求出现时系统不需要或者仅需要少量修改就可以支持,无需整个系统重构或者重建。 面向对象就是为了解决可扩展性,后来的设计模式更是将可扩展性做到了极致。 具备良好扩展性的两…

【从零开始学架构-李运华】07|低成本、安全、规模

低成本 高性能和高可用架构通常都是增加服务器来满足要求,但低成本正相反,当然也不是首要目标。 往往“创新”才能达到低成本的目标!! 技术创新: NoSQL(Memcache、Redis)等是为了解决关系型数…

阿里P9李运华:想成为架构师,你必须知道CAP理论

CAP定理(CAP theorem)又被称作布鲁尔定理(Brewers theorem),是加州大学伯克利分校的计算机科学家埃里克布鲁尔(Eric Brewer)在2000年的ACM PODC上提出的一个猜想。2002年,麻省理工学…

笔记——专访李运华:程序员如何在技术上提升自己

原文链接:http://www.csdn.net/article/2014-10-20/2822190 摘要: 专访李运华:程序员如何在技术上提升自己 方法: 1 写博客 2 链式学习:从一个点不断学习相关的知识 3 闭环学习:了解整个功能或业务的全流…

【从零开始学架构-李运华】09|架构设计原则案例

【淘宝】 个人网站 > Oracle/支付宝/旺旺 > Java时代1.0 > Java时代2.0 > Java时代3.0 > 分布式时代 买一个快速可用、快速开发的系统。 MySQL升级Oracle,买性能 3. PHP切换Java,重构网站 4. 增加各种组件框架优化性能控制成本 5. 去I…

【从零开始学架构-李运华】05|复杂度来源:高可用

高可用的定义 系统无中断地执行其功能的能力,代表系统的可用性成都,是进行系统设计时的准则之一。 虽然方案五花八门但本质就是“冗余”! 与高性能的区别 高性能增加机器在于扩展处理性能,高可用在于增加冗余单元防止中断。 计算…

【从零开始学架构-李运华】04|复杂度来源:高性能

复杂度的六个来源之一:高性能 运算性能迅猛发展、软件复杂度发展、硬件存储发展。 用来代替旧技术的新技术才会给软件系统带来复杂度,而用来淘汰旧技术的新技术则不用担心。 1.单台计算机 手工操作->批处理->进程->分时多进程->进程通信-&…

【从零开始学架构-李运华】03|架构设计的目的

架构设计的误区 系统不一定需要架构设计; 架构设计不一定能提升开发效率; 好的架构设计能促进业务发展; 不是所有系统都需要架构设计; 等等…… 架构设计的真正目的 为了解决软件复杂度带来的问题 如何下手架构设计?…

李运华《从零开始学架构》——架构设计三原则

课程链接 https://time.geekbang.org/column/intro/100006601?utm_sourcetime_web&utm_mediummenu&utm_termtimewebmenu 分割线 前面几期专栏,我跟你系统的聊了架构设计的主要目的是为了解决软件系统复杂度带来的问题,并分析了复杂度的来源…

专访李运华:程序员如何在技术上提升自己

摘要:社区之星第56期采访了UC的软件工程师李运华,他先后经历了电信行业和互联网行业。在本次采访中,李老师分享了他的职场经历、团队管理经验、程序员提升自己的方法和应具备的素养,以及谈了对面向对象和编程语言看法。 李运华&a…

阿里P9李运华:架构到底是指什么?

你好,我是李运华。 2018 年,我发布了《从 0 开始学架构》这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟。 后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务。为什么说支付业务更加复杂&#xf…

Rust之fluid用法(fltk ui 设计器)

fl2rust 用法 $ cargo install fl2rust然后运行&#xff1a; $ fl2rust <fl file>.fl > <output file>.rs 要通过 cargo 实现自动化&#xff0c;我们可以通过将 fl2rust 添加到构建依赖项中来将其用作库&#xff1a; # Cargo.toml [dependencies] fltk &q…

FLTK学习笔记2-回调函数

FLTK学习笔记2-回调函数 回调函数为控件添加回调函数程序示例 回调函数 回调函数&#xff08;Callback&#xff09;简单说来就是一个以函数指针的方式被调用的函数。 考虑如下情况&#xff0c;我们编写了一个整数排序算法函数mySort&#xff1a; void mySort(std::vector<…

rust 使用fltk 的小问题

rust 使用fltk 的小问题 windowns下进行编译使用cargo build --release 打包出现以下问题 最近有需求写一个简单的桌面应用程序&#xff0c;正好使用rust来练练手&#xff0c;中间碰到一些问题&#xff0c;尤其fltk 打包有个cmd黑框就很恶心。只记录一些国内网络上资料较少的问…

gmsh+fltk配置过程

本文主要讲解如何利用cmake进行配置带图形界面的gmsh,因为gmsh给出的qt范例只有简单的显示功能&#xff0c;而对 fltk中编写了较完整的功能&#xff0c;所以利用fltk进行说明&#xff0c;如需qt可参考链接。本文使用的编译器是vs2019 首先为了编译成功gmsh软件&#xff0c;我们…

FLTK学习笔记1-绘制基本控件(按钮、文本输入、容器)

FLTK学习笔记1-绘制基本控件&#xff08;按钮、文本输入、容器&#xff09; FLTK中的坐标FLTK常用控件按钮控件文本控件容器控件 绘制基本控件 FLTK中的坐标 在FLTK中坐标均为正整数&#xff0c;其单位是像素&#xff08;pixel&#xff09;&#xff0c;原点&#xff08;x0, y0…

FLTK中的字体

FLTK中的字体 字体在FLTK中的表示获取系统的字体编号表程序示例 字体在FLTK中的表示 在FLTK中&#xff0c;系统中的每一种字体都对应着一个整数类型(严格来讲是Fl_Font类型&#xff0c;但Fl_Font本身就是int的别名)的字体编号。例如&#xff0c;在本人的系统中“楷体”所对应的…

FLTK学习笔记4-在FLTK中显示图片(上)

FLTK学习笔记4-在FLTK中显示图片&#xff08;上&#xff09; Fl_JPEG_Image和Fl_PNG_ImageFl_Shared_Image程序示例 在FLTK中&#xff0c;并不是任何时候都可以绘图的&#xff08;当然也包括绘制图片&#xff09;&#xff0c;一般来讲我们只能在控件类中的 draw()方法中绘制所…

C++轻量级跨平台桌面GUI库FLTK的简单使用

C的跨平台桌面GUI库有很多&#xff0c;大体上分成两种流派&#xff1a;retained mode和immediate mode。 其中前者是主流的桌面GUI机制框架&#xff0c;包括&#xff1a;Qt、wxwidgets、gtk、juce等后者是一些游戏引擎编辑器常用的GUI机制框架&#xff0c;包括&#xff1a;img…