1XX
101 Switching Protocols
客户端发送带有首部字段Upgrade的字段,告知服务器通信协议发生改变
服务端返回 101 Switching Protocols,之后的通信不再采用HTTP,而采用Upgrade指定的方式
2XX
200 ok
含义 :成功处理
204 no content
含义 :服务器接受的请求已成功处理,但是在相应报文中不包含实体的主体部分(就是没有返回数据),浏览器不刷新页面也不导向新的页面
举例:
- form表单等如果返回
204,那么页面不刷新
- a的href如果返回
204,那么页面不跳转
206 partial content
含义 :返回一部分内容(分片请求数据)
请求头限定范围 :Range: bytes=0-1024 。
头部字段说明
响应头 :
响应头Content-Range表示文件真实大小1
2Content-Range: bytes 557056-6160883/6160884
Content-Length: 5603828
请求头:1
Range: bytes=557056-
Range: bytes=startOffset-targetOffset/sum [表示从startOffset读取,一直读取到targetOffset位置)
每次要续传时,先读取已下载文件的字节大小比如100000,然后 rang:100000-,就可以继续下载
Range: bytes=startOffset-targetOffset [字节总数也可以去掉]
应用:断点续传,大文件下载,迅雷,百度
3XX
301:永久重定向
含义:
该状态码表示请求的资源已被分配了新的uri,也就是会做一个跳转
后台 1
2res.writeHead(302,{'Location': '/'});
res.end();
记住:url重定向是在浏览器端完成的
,url的重定向与状态码和location有关
,浏览器先判断状态码是否为301或302时,才会根据location响应头内容进行跳转,上面的代码里,如果返回的状态码是别的比如200啥的,那么浏览器不会跳转
302:临时重定向
临时跳转,不是永久性的
区别
从 SEO 角度,302 跳转,搜索引擎仍然保留原来的地址,301 跳转,则会保留跳转后的地址
303:see other
请求的资源存在另一个uri,应该使用get方法定向获取请求的资源
理解:这和302似乎很像,举个例子
比如我要用post
请求创建一个用户admin,到了后台发现admin已经存在,那返回个303和location位置,然后浏览器用get
去请求admin的位置(响应头location里返回)
资源已存在
304:not modified
资源找到了,但不符合条件,不返回任何主体
理解:当触发协商缓存
时,就返回304
一段悄悄地对话
浏览器:我来找2019年后更新的A数据
服务器:A数据2019年后没更新过啊,304走你
浏览器:从(浏览器)缓存中读取
4XX:bad request 客户端错误
请求报文中存在语法错误,当错误发生时,需要修改请求内容后再次发送
401 unauthorized
一般是客户端需要认证(登录状态失效等)
412 precondition failed
响应状态码 412 Precondition Failed(先决条件失败)表示客户端错误,意味着对于目标资源的访问请求被拒绝。这通常发生于采用除 GET 和 HEAD 之外的方法进行条件请求时无法进行请求(通常是上载或修改资源,由首部字段 If-Unmodified-Since 或 If-None-Match 规定的先决条件不成立的情况下
403 forbidden
你介个用户没有权限访问指定资源的权限
404 not found
没找到请求资源
405 Method Not Allowed
服务端不支持这种HTTP方法
5XX 服务端错误
500
服务端有bug或错误
503 service unavailable
服务器停机或超载维护