HTTP状态码(status codes)是HTTP协议中,响应报文的起始行中包含的一种服务器用于向客户端说明操作状态的三位数字。例如在一个正常的GET请求完成后,服务器会向客户端返回

HTTP/1.0 200 OK

在这个例子中,状态码就是 200

状态码的第一位数字表示了响应状态的类型,其中

  • 1xx 信息提示
  • 2xx 成功
  • 3xx 重定向
  • 4xx 客户端错误
  • 5xx 服务器错误

今天我们主要讨论1xx的状态码,即消息状态码。由于当前的HTTP版本只为每种类型的状态码定义了少数一部分,而HTTP协议具有可拓展性,随着协议的发展,状态码将不断完善,较老版本的HTTP应用就不能识别较新的状态码,而这个特性也就使得不同版本的HTTP应用在通讯时产生了一些问题。由于 HTTP/0.9 版本的响应报文只包含实体部分,没有状态码或原因短语的存在,故不做讨论。

1xx状态码是 HTTP/1.1 版本新定义的,用来表示请求被正常接受,会进行进一步处理。这些状态码相对较新,并且 HTTP/1.0 版本无法识别,所以原则上不应该向HTTP/1.0版本的客户端发送任何1xx状态码。

100 Continue

该状态码说明服务器收到了请求的初始部分,并且请客户端继续发送。在服务器发送了 100 Continue 状态码之后,如果收到客户端的请求,则必须进行响应。

这个状态码实际上是对如下场景的一种优化:客户端有一个较大的文件需要上传并保存,但是客户端不知道服务器是否愿意接受这个文件,所以希望在消耗网络资源进行传输之前,先询问一下服务器的意愿。实际操作为客户端发送一条特殊的请求报文,报文的头部应包含

Expect: 100-continue

此时,如果服务器愿意接受,就会返回 100 Continue 状态码,反之则返回 417 Expectation Failed 状态码。对于客户端而言,如果客户端没有发送实际请求的打算,则不应该发送包含 100 Continue Expect 的报文,因为这样会让服务器误以为客户端将要发送一个请求。

之前提到过,并不是所有的HTTP应用都支持 100 Continue 这个状态码(例如HTTP/1.0及之前的版本的代理或服务器)所以客户端不应该在发送 100 Continue Expect 后一直等待服务器的响应,在一定时间后,客户端应当直接发送计划发送的内容。

而对于服务器而言,也不应当把 100 Continue 当作一个严格的判断方法。服务器有可能在发送回应之前就受到了客户端发来的主体报文。此时服务器就不需要再发送 100 Continue 作为回应了。但仍然需要在接受完成后返回适当的状态码。理论上,当服务器收到一个 100 Continue Expect 请求时,应当进行响应。但服务器永远也不应向没有发送 100 Continue Expect 请求的客户端发送100 Continue 状态码作为回应。这里提到的应当进行响应是指:假设服务器不打算接收客户端将要发送的主体报文,也应当做适当的响应(例如发送 417 Expectation Failed)而不是单纯的关闭连接,这样会对客户端在网络层面上产生影响。

特别的,作为代理的HTTP应用在收到带有 100 Continue Expect 的请求时,需要进行额外的判断。假设代理服务器明确知道报文下游的HTTP版本是兼容 HTTP/1.1 的,或者代理服务器不知道报文下游的版本,它都应当转发这条 100 Continue Expect 请求。但是如果代理服务器明确知道报文下游的应用无法处理 100 Continue Expect 的话,则应当直接向客户端返回 417 Expectation Failed 作为响应。而这也并非唯一的解决办法,另一种可行的办法是直接向客户端返回 100 Continue ,然后向下游传递删除了 100 Continue Expect 的报文。

另外,如果代理服务器决定为 HTTP/1.0 及之前的版本服务的话,那么当它收到来自服务器的 100 Continue 响应报文时,则不应当向客户端转发这条响应,因为客户端很可能不知道如何处理该报文。

转载于:https://www.cnblogs.com/nangcr/p/informational-responses-status-code-100-in-http.html

HTTP报文中的100状态码相关推荐

  1. Web返回结果和HTTP状态码详解

    状态码类别 状态码 类别 原因短语 1XX Informational(信息性状态码) 接受的请求正在处理 2XX Success(成功状态码) 请求正常处理完毕 3XX Redirection(重定 ...

  2. 常见的几种HTTP状态码

    状态码类别 1XX(信息性状态码)表示接收的请求正在处理 2XX(成功状态码)表示请求正常处理完毕 3XX(重定向状态码)表示需要进行附加操作以完成请求 4XX(客户端错误状态码)表示服务器无法处理请 ...

  3. Http 请求常见状态码报错(200/404/500)

    为了更好地了解各个状态码代表的意思,做了一个总结,在实际的工作中,主要涉及到的还是200,404,500等. 1. http状态码分为五大类: 2. 100-199 信息性质状态码 1XX的状态码不常 ...

  4. http简介以及常见知识和http请求头,响应头,状态码,内容类型对照表分享(超实用)

    1.http简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...

  5. 常见http状态码说明(转)

    首先要先了解下什么是HTTP状态码:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.每当客户端向Web服务器发送一个HTTP请求时,服务器都会返回 ...

  6. 【Http】一文备忘Http状态码(406,415,422)

    最近在调试接口时,web api 报了一个415状态码.好久没见到这个状态码,一时还真不知道啥情况.所以,人的大脑是有遗忘规律的,为了加深印象,所以我觉得我有必要再复习一下. 1.HTTP的状态码 首 ...

  7. http网页状态码大全查询

    http网页状态码大全查询 http网页状态码,是诸多站长经常接触到的东西,所谓的HTTP状态码,它是浏览器传输协议所响应的一种代码状态,不同的代码状态,反应了网页目前处于的状态,根据不同的状态码,可 ...

  8. 常用的http状态码查询大全

    http网页状态码,是诸多站长经常接触到的东西,所谓的HTTP状态码,它是浏览器传输协议所响应的一种代码状态,不同的代码状态,反应了网页目前处于的状态,根据不同的状态码,可以判断出HTTP网页存在的问 ...

  9. 向服务器发送请求,服务器返回给客户端的响应状态码列表及其代表含义

    目录 1.状态码:100~ 2.状态码:200~ 3.状态码:300~ 4.状态码:400~ 5.状态码:500~ 响应状态码表示服务器的响应状态,在爬虫开发过程中,向服务器发送一个请求,服务器会根据 ...

最新文章

  1. deeplearning搜索空间
  2. PDMan-2.1.3 发布:用心开源,免费的国产数据库建模工具
  3. win10无法连接到Windows(SENS)服务网络连不上怎么办
  4. Webx框架:Spring Schema 和 Spring Ext
  5. [学习笔记]面向对象VS面向过程
  6. Infer.NET——为热爱概率的人准备的库
  7. 高性能服务器架构思路
  8. php日志缓存,php – Symfony和Docker – 缓存和日志目录权...
  9. Teamcenter 2007之错误信息提示
  10. 教你用 Android 做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划
  11. 奥威软件大数据bi_哪家BI软件能做Sql server的数据可视化分析?
  12. C语言 函数指针一(函数指针的定义)
  13. 打开CAD图纸转换成dwf格式的文件
  14. 网络安全专栏——telnet远程登录数据包捕获个性化登录账号及密码(图文丰富 保姆级 有几种错误解决方案 为什么不用输入telnet密码就能登录 )
  15. co作为前缀的意思_com,con,col,cor等前缀为什么表示共同的意思?
  16. 「数据架构」什么是实体关系图(ERD)?
  17. 书城项目第三阶段及其源码
  18. WordPress如何修改底部备案信息
  19. 深入浅出Alpha Zero技术原理
  20. 2020年全球搜索引擎市场份额和全球排名分析

热门文章

  1. mysql数据库-索引基础篇
  2. CCF-CSP 如何刷题?
  3. android草稿纸功能,草稿纸app下载-草稿纸 安卓版v1.0-PC6安卓网
  4. 51nod 1366 贫富差距 弗洛伊德
  5. 用shtml来include网页文件(开启SSI)
  6. Thinkphp内核企业CRM客户管理系统旗舰版商业源码+无任何加密无域名限制+源码可二次开发
  7. C语言编写字符串拷贝(strcpy)函数详解以及assert函数
  8. uni-app端用户名密码加密解密。后端解密方法。
  9. 正则表达式引擎 源码 c#_如何在C#中构建正则表达式引擎
  10. Backtrader(十三)- Order订单 -订单类型、订单执行逻辑