常见HTTP状态码
当我们从客户端向服务器发送请求时
-
服务器向我们返回状态码
-
状态码就是告诉我们服务器响应的状态
-
通过它,我们就可以知道当前请求是成功了还是出现了什么问题
-
状态码是由3位数字和原因短语组成的(比如最常见的:200 OK)
-
其中第一位数字表示响应类别,响应类别从1到5分为五种
-
add:其实我查阅资料发现还有一个6打头的一个 600 Unparseable Response Headers
-
表示服务器没有返回响应头部,只返回实体内容,也算做服务器错误状态码吧,不过绝对不常见
状态码响应类别的的定义是必须遵守的,后面的两个数字服务器自己DIY也没什么问题
-
RFC2616(用来指定HTTP协议标准的文档)标准定义的就有四十多种,加上扩展能达到六十种
-
不过常见的大概只有十四种,下面我来谈谈这些有代表性的14种HTTP状态码
-
#2XX 成功#
-
##200 OK##
-
表示请求被服务器正常处理
-
最常见的就是这个了
-
随着这个状态码返回的信息跟你的请求方法有关
-
比如GET请求,请求的资源会作为响应实体返回
-
而HEAD请求,信息只存在于响应报文首部,因为它不会返回报文实体,只返回报文首部
##204 No Content##
-
表示请求已成功处理,但是没有内容返回(就应该没有内容返回的状况)
-
也就是返回的响应报文中没有报文实体(其实是没有报文实体的主体部分)
-
浏览器向服务器发送请求后收到了204,那么浏览器页面不会发生更新
-
一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况
##206 Partial Content##
-
表示服务器已经完成了部分GET请求(客户端进行了范围请求)
-
响应报文中包含Content-Range指定范围的实体内容
#3XX 重定向#
-
##301 Moved Permanently##
-
永久重定向,表示请求的资源已经永久的搬到了其他位置
-
就是说资源已经被分配了新的URI
-
新的URI应该提示在响应报文的Location首部字段
-
只要不是HEAD请求,响应实体应该包含新URI的超链接和简短的说明
##302 Found##
-
临时重定向,表示请求的资源临时搬到了其他位置
-
请求的资源暂时被配到到了新的URI
-
和301很像,只不过资源是临时移动,资源在将来可能还会改变
-
同样地,新的临时URI应该提示在响应报文的Location首部字段
-
只要不是HEAD请求,响应实体应该包含新URI的超链接和简短的说明
##303 See Other##
-
表示请求资源存在另一个URI,应使用GET定向获取请求资源
-
303功能与302一样,区别只是303明确客户端应该使用GET访问
-
(很多HTTP/1.1之前的浏览器不能理解303,但是大家都把302当303对待,使用GET请求新URI)
##304 Not Modified##
-
表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足
-
返回304时,不包含任何响应主体
-
虽然304被划分在3XX,但和重定向一毛钱关系都没有
##307 Temporary Redirect##
-
临时重定向,和302有着相同含义
-
尽管302标准禁止POST变为GET,但没人听他的
-
而307就会遵照标准,不会从POST变为GET
-
但处理响应行为,各个浏览器可能不同
-
-
表示请求报文存在语法错误或参数错误,服务器不理解
-
服务器不应该重复提交这个请求
-
需要修改请求内容后再次发送
##401 Unauthorized##
-
表示发送的请求需要有HTTP认证信息或者是认证失败了
-
返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部以质询用户信息
-
浏览器初次接受401时,会弹出认证窗口
-
表示对请求资源的访问被服务器拒绝了
-
服务器可以对此作出解释,也可以不解释
-
想说明的话可以在响应实体的主体部分描述原因
-
比如说你可能没有访问权限
-
表示服务器找不到你请求的资源
-
也有可能服务器就是不想给你然后骗你找不到(⊙ˍ⊙)
-
而且大多服务器都是这么玩这个状态码的
#5XX 服务器错误#
-
##500 Internal Server Error##
-
表示服务器执行请求的时候出错了
-
可能是Web应用有bug或临时故障
-
更有可能是服务器源代码有bug…
-
表示服务器超负载或正停机维护,无法处理请求
-
如果服务器知道还需要多长时间,就写入Retry-After首部字段返回
#总结#
-
返回的状态码和状态不一致的情况是有可能发生得
-
比如Web应用程序内部错误,但仍然返回 200 OK
-
200 OK
-
请求正常处理完毕
-
204 No Content
-
请求成功处理,没有实体的主体返回
-
206 Partial Content
-
GET范围请求已成功处理
-
301 Moved Permanently
-
永久重定向,资源已永久分配新URI
-
302 Found
-
临时重定向,资源已临时分配新URI
-
303 See Other
-
临时重定向,期望使用GET定向获取
-
304 Not Modified
-
表示资源未被修改,因为请求头指定的版本If-Modified-Since或If-None-Match。在这种情况下,由于客户端仍然具有以前下载的副本,因此不需要重新传输资源。
-
307 Temporary Redirect
-
临时重定向,POST不会变成GET
-
400 Bad Request
-
请求报文语法错误或参数错误
-
401 Unauthorized
-
需要通过HTTP认证,或认证失败
-
403 Forbidden
-
请求资源被拒绝
-
404 Not Found
-
无法找到请求资源(服务器无理由拒绝)
-
500 Internal Server Error
-
服务器故障或Web应用故障
-
503 Service Unavailable
-
服务器超负载或停机维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!