204 - 图1 HTTP协议中 204 No Content成功状态响应码表示目前请求成功,但客户端不需要更新其现有页面。204 响应默认是可以被缓存的 rfc7231#section-6.3.5

哪些场景使用204状态码?

一些服务只需要返回成功与否的时候,可以尝试使用HTTP的状态码来作为返回信息,而省掉多余的数据传输。比如

  1. REST中的DELETE请求,成功删除后,返回204代表成功删除。
  2. 一些网站分析的代码中常用到,用于上报客户端的一些信息提交给服务器而无需关心响应。

没有响应体的HTTP/200响应 和 204状态码 有什么区别?

如果没有响应体,则在大多数场景下,这两种响应码完全等效,但有一种情况下,HTTP/204响应会让浏览器有不同的表现。这种情况就是当用户在浏览器窗口window或者frame/iframe框架中导航的时候。

  • 如果导航到的URL返回了一个没有响应体的HTTP/200响应,则页面将会显示一个空白文档(就是一片白色)。页面的URL地址也会变成新指定的URL。
  • 如果服务器返回的是一个HTTP/204响应,当前页面不会有任何变化,就好像根本没有进行导航操作一样。页面的URL地址也保持不变。

204状态码返回具体长什么样子?

访问 http://clients1.google.com/generate_204 这个链接,打开控制台查看
image.png

205 和 204 有什么区别

205的意思是在接受了浏览器POST请求以后处理成功以后,告诉浏览器,执行成功了,请清空用户填写的Form表单, 方便用户再次填写。但 请注意 205的兼容性很差,大部分的浏览器都会把205当做204或者200同样对待。