专栏首页Coding迪斯尼HTTP协议的状态码解读

HTTP协议的状态码解读

当客户端把请求发送给服务器后,对方会根据处理结果返回一系列HTTP数据包。其中第一行就用给定格式表明服务器对请求处理的结果。第一行包括三部分信息,第一部分是一个数值,也叫状态码,用来表明请求是否成功,第二部分是对状态码的字符串解读,用于说明状态码表示的含义,第三部分就是协议的版本。

第一部分的数值其实是用于机器解读,因为机器适用于解读数值。第二部分字符串其实是为了方便与人来解读。状态码跟我们前面描述的FTP协议一样拥有给定形式,它由三位数字组成,其中第一位数字的作用最为重要,它用于表达状态的分类,第二和第三位数字能够组合成100种情况,是对第一位数字所表明的给定分类下的进一步解读,通常状态码以”xyy”的形式给出,我们先看x表示的含义:

状态码格式

含义

说明

1yy

说明类消息

用于说明某些信息,并不表明请求是否成功

2yy

请求成功

客户端发来的请求被服务器正常处理并返回相应结果

3yy

重定向

请求没有成功,需要客户端采取指定措施来确保请求能得到执行

4yy

客户端错误

请求无效,存有语法错误或者服务器因为某些原因无法完成请求,并且服务器认为原因来自于客户端

5yy

服务器错误

客户请求合法,但是由于服务器原因无法完成请求

从上表看出,第一个数字将信息分成了5大类,接下来的yy用于对某一类情况进行具体描述,例如常见的404,第一个数字4表示客户端请求出错,接下来的“04”表示服务器没有客户端请求的数据。“00”表示通用信息,它不给出具体的说明,通常情况下表明当前情况不属于任何特定情况,例如“400”只是表示客户端出错,但服务器无法详细说明客户端出了什么具体问题。

接下来是状态码的字符串说明,这是为了能够给人类提供容易读懂的信息。这部分信息能被服务器的管理员进行调整,它只是简短的描述相应信息,更多详细说明可能包含在数据包里面。我们看看常用的状态码及其字符串描述

状态码格式

字符串

说明

100

Continue

客户端可以继续向服务器发送请求,因为后面是00,因此它是通用信息

101

Switching Protocols

客户端必须Upgrade包头要求服务器使用新版本协议并且服务器同意了请求

200

OK

客户端请求被服务器接受

201

Created

请求成功同时被请求的资源正在生成,通常情况下该状态码用于回复PUT请求

202

Accepted

请求被服务器接受但还未被处理

203

No-Authoritative Information

请求成功,但是返回的某些信息并非来自当前服务器而是其他第三方

204

No Content

请求成功,但服务器认为无需返回任何信息给客户端

205

Reset Content

请求成功,服务器要求客户端重置被返回的文本以便防止继续发送类似请求,该回复通常用于表格提交

206|Partial Content|请求成功,并部分完成了GET请求,具体内容在后续章节详解| |300|Multiple Choices|服务器返回多条解释信息,客户端从返回的多条信息中选择最适合自己的一条|

更多的信息在我们后续实现协议时再进行解读。这里我们再看看返回码100。通常情况下客户端发送给服务器一个完整请求然后等待服务器的处理结果,但是某些情况下客户端会先试探服务器是否愿意接收客户端要发送的请求,如果服务器愿意,客户端再发送请求。在特殊情况下,客户端可能会向服务器发送含有大量数据的请求。

这种情况下客户端就得实现看看服务器是否愿意接收请求,它会发生一个特殊请求包头:”Expect : 100-continue”,如果服务器支持这种包头,它就会处理该请求包头,然后会返回”100 Continue”作为初始回应,这等于告诉客户端继续发送余下的请求,然后客户端服务器进入正常的请求回应流程,具体情况在代码实践时再进行详细研究。

本文分享自微信公众号 - Coding迪斯尼(gh_c9f933e7765d),作者:陈屹

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java实现HTTP协议:数据包格式概览

    我们看看http协议的数据包格式,首先可以使用wireshark抓包,由于http协议使用80端口,因此可以在wiresharks中使用过滤条件tcp.prot...

    望月从良
  • TCP窗口调整与数据流控制以及病态窗口症状

    TCP协议主要依赖不断调整窗口大小来保证数据收发吞吐率。在三次握手时,客户端会告诉服务器自己一次能接收数据量的大小,这就对应客户端的接收窗口以及服务器的发送端口...

    望月从良
  • FTP:构建在TCP协议之上的文件传输协议

    在前几节我们辛苦完成了TCP协议的基本设计,我们的代码当然无法达到工业级要求,但是基本将TCP协议的要点表达出来,是一个”基本可用版本“。TCP协议类似于一条货...

    望月从良
  • 前端基础——谈谈HTTP

    •POST:向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改;

    行云博客
  • 常见”HTTP状态码”大全

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

    空木白博客
  • HTTP协议概述

    HTTP1.0定义了三种请求方法:GET、POST、HEAD方法。 HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRA...

    WindrunnerMax
  • 3.Android网络编程-http介绍

    HTTP1.0定义了三种请求方法: GET(查), POST(改)和 HEAD(获取报头,一般用来测试链接是否正常)方法。

    张诺谦
  • 常见HTTP/FTP/WebSockets状态码大全

    这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1...

    小弟调调
  • HTTP状态码

    response.sendError(401, "当前账户未登录或会话失效,请重新登录!)

    WindWant
  • 常见HTTP请求错误码大全

    三哥

扫码关注云+社区

领取腾讯云代金券