1XX

101 Switching Protocols

客户端发送带有首部字段Upgrade的字段,告知服务器通信协议发生改变
服务端返回 101 Switching Protocols,之后的通信不再采用HTTP,而采用Upgrade指定的方式

2XX

200 ok

含义 :成功处理

204 no content

含义 :服务器接受的请求已成功处理,但是在相应报文中不包含实体的主体部分(就是没有返回数据),浏览器不刷新页面也不导向新的页面

举例

  1. form表单等如果返回 204,那么页面不刷新
  2. a的href如果返回 204,那么页面不跳转

206 partial content

含义 :返回一部分内容(分片请求数据)

请求头限定范围 :Range: bytes=0-1024 。

头部字段说明
响应头 :
响应头Content-Range表示文件真实大小

1
2
Content-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
2
res.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

服务器停机或超载维护