HTTP的状态码有很多种,主要有1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类。平时我们接触比较多的是200、400、500等。

这里我们主要讨论一下状态码204,在HTTP RFC 2616中关于204的描述如下:

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent’s active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent’s active view.

意思等同于请求执行成功,但是没有数据,浏览器不用刷新页面.也不用导向新的页面。如何理解这段话呢。还是通过例子来说明吧,假设页面上有个form,提交的url为http-204.htm,提交form,正常情况下,页面会跳转到http-204.htm,但是如果http-204.htm的相应的状态码是204,此时页面就不会发生转跳,还是停留在当前页面。另外对于a标签,如果链接的页面响应码为204,页面也不会发生跳转。

所以对于一些提交到服务器处理的数据,只需要返回是否成功的情况下,可以考虑使用状态码204(也就是XMLHttpRequest.status)来作为返回信息,从而省掉多余的数据传输。

$.ajax({

type: "POST",

beforeSend: function(xhr){xhr.setRequestHeader(‘__RequestVerificationAntiCSRFToken‘, $("#hidden-CSRFToken").val());},

url: $(this).data(‘targetUrl‘),

cache: false,

data:post_data,

dataType:"json",

async: true,

error: function(jqXHR, error, errorThrown) {

alert(jqXHR.status);

},

success: function(data) {

//...

}

});

上次我们讲了HTTP/304响应,今天我们继续讨论另外三种可能让Fiddler用户感到困惑的请求或响应类型.

下面的截图中有三条Web会话,每一条都返回了不同的状态码,但都在HTTP/2xx范围内:

HEAD请求方法

第一个请求返回了HTTP/200,但你应该注意到了,服务器并没有返回响应体.如果你在Inspectors选项卡中查看一下,就会发现客户端使用的是HEAD请求方法.HEAD方法允许客户端仅向服务器请求某个资源的响应头,而不要真正的下载该资源本身.服务器返回的响应头应该和客户端使用GET方法请求该资源时返回的请求头相同,比起GET方法,只是省略了响应体.

从上图中可以看出,如果客户端使用GET而不是HEAD方法请求该资源,服务器就应该会返回6623字节大小的响应体.还可以看出,该资源的类型为text/html以及它的编码为UTF-8.客户端可以使用HEAD请求来收集相关信息以确定如何操作该资源.例如,在IE中,如果一个OBJECT元素缺少TYPE参数,浏览器就会发送一个HEAD请求,目标URL为这个OBJECT元素的SRC属性指定的URL.然后浏览器就能够根据响应中的Content-Type头知道这是哪种类型的OBJECT.

HTTP/204响应

会话列表中的第二条会话返回了HTTP/204响应.从Content-Length响应头可以看出,该响应没有响应体,状态码描述为“No Content”:

你也许会有疑问:“返回一个没有响应体的HTTP/200响应不行吗?”

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

如果导航到的URL返回了一个没有响应体的HTTP/200响应,则页面将会显示一个空白文档(就是一片白色).页面的URL地址也会变成新指定的URL.

如果服务器返回的是一个HTTP/204响应,当前页面不会有任何变化,就好像根本没有进行导航操作一样.页面的URL地址也保持不变.

HTTP/205响应码很少见,它类似于HTTP/204,除了页面保留在当前文档不变以外,多了一步操作,就是要清空当前文档内所有表单控件的内容.

HTTP/206响应

最后一条会话返回了HTTP/206 “Partial Content”响应.这种响应是在客户端表明自己只需要目标URL上的部分资源的时候返回的.这种情况经常发生在客户端继续请求一个未完成的下载的时候(通常是当客户端加载一个体积较大的嵌入文件,比如视屏或PDF文件),或者是客户端尝试实现带宽遏流的时候.

你可以通过Range请求头辨认出一个部分内容请求.该请求头表明了客户端需要请求资源的哪一部分:

在上图的请求中,客户端告诉服务器,它需要该视屏文件中从172,032到13,325,503字节范围内的数据.

html状态码206,http状态码204/206/200理解相关推荐

  1. HTTP状态码对照表(全部状态_建议收藏)

    HTTP状态码的分类 HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用.HTTP状态码共分为5种类型: 分类 分类描述 1** 信息,服务器收到请求,需 ...

  2. 什么是HTTP状态码?网络状态下的常见码状态介绍

    转自:微点阅读  https://www.weidianyuedu.com 什么是HTTP状态码? HTTP状态码:这是服务器和客户端之间交流信息的语言. 比如: 当客户端向服务器请求一个死链接时,服 ...

  3. HTTP状态码分类(常用HTTP状态码和HTTP状态码大全)

    http状态码有什么用? http状态码的核心作用是Web Server服务器用来告诉客户端,当前的网页请求发生了什么事,或者说当前Web服务器的响应状态.所以HTTP状态码常用来判断和分析当前Web ...

  4. HTTP状态码常见的状态码!

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...

  5. (总结)HTTP 状态码分类 及 状态码英文含义详解

    HTTP 状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响 ...

  6. http状态码大全100-599状态详解

    协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. HTTP ...

  7. HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表

    HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表 状态码表 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching ...

  8. FPGA中有限状态机的状态编码采用格雷码还是独热码?

    今天看<从算法设计到硬件逻辑的实现>这本电子书时,遇到了一个问题,就是有限状态机的编写中,状态编码是采用格雷码还是独热码呢?究竟采用哪一种编码呢? 采用独热码为什么节省许多组合电路? 等等 ...

  9. close wait 过多原因_从Linux源码看TIME_WAIT状态的持续时间

    前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右.线上实际却存在TIME_WAIT超过100s的Socket.由于这牵涉到最近出现的一个复杂Bug的分析.所以, ...

  10. 服务器响应码418,HTTP状态码是什么?与SEO相关的有哪些?

    HTTP状态代码(如404,301和500)对于常规访问者来说可能没什么意义,但对于SEO,它们非常重要.不仅如此,搜索引擎蜘蛛如Baiduspider使用这些蜘蛛蜘蛛来确定网站的健康状况.这些状态码 ...

最新文章

  1. Java学习总结:18
  2. 腾讯AI Lab负责人张潼离职,张正友或接替其位
  3. 细述vim编码格式配置
  4. Factory Method(工厂方法)--对象创建型模式
  5. cxgrid中纵横单元格合并_逆向查询合并单元格中的数据,这两种方法你值得拥有...
  6. android arcgis多变形边框颜色,ArcGIS制图技巧—边框的选择
  7. 关于JS中apply和call详细解答
  8. linux 重新安装内核,升级操作系统内核(不重新安装UltraPath)
  9. linux系统学习第二天
  10. 深度剖析MQTT协议的整个通信流程
  11. 计算机组成原理学习笔记——数据通路
  12. puzzle(003)数字拼图、色块拼图
  13. 鸡年生的男宝宝取什么名字好?为宝宝起名也有小技巧
  14. 使用enum代替Constants
  15. 获取历史和实时股票数据接口
  16. 腾讯嵌入式系统tos移植到正点原子阿波罗F429
  17. 浅谈OpenNI之我见
  18. Facebook的23岁创始人
  19. mac虚拟摄像头插件_Mobiola WebCamera(网络虚拟摄像头) V2.4 Mac版
  20. ForkJoin原理

热门文章

  1. tcpClient的使用
  2. iOS性能优化系列篇之“优化总体原则”
  3. caxa 拉伸命令的使用(一次拉伸很多线)
  4. 测试理论----软件测试六大测试类型
  5. ”在禁用UAC时,无法激活此应用“问题
  6. c语言中优先级顺序表
  7. 修饰器 TypeError: A() missing 1 required positional argument: ‘func‘
  8. Java软件设计师 中级
  9. 通过网络数据采集系统快速获得优质销售线索
  10. 在R语言中显示数学公式