HTTP报文格式 -《HTTP权威指南》阅读笔记

本文详细解析了HTTP报文的组成部分,包括起始行、首部和主体。起始行区分了请求报文和响应报文,如请求行包含方法、URL和HTTP版本;响应行包含HTTP版本、状态码(如200表示成功)和原因短语。首部提供了附加信息,如通用、请求、响应、实体和扩展首部。主体则可选,承载了HTTP报文的实际内容。
摘要由CSDN通过智能技术生成

        HTTP报文是简单的格式化数据块,主要由三个部分组成:起始行、首部、主体。
        所有的HTTP报文都可以分为两类:请求报文、响应报文。

一.起始行

        所有的HTTP报文都以一个起始行作为开始。请求报文的起始行说明了要做什么,响应报文的起始行说明发生了什么。
请求报文
        上图是一个请求报文的截图,它的第一行就是起始行,也被称为请求行,它包含了3个部分:方法、URL、HTTP版本号。
        1.方法。方法用来告知服务器要做些什么,有些方法的请求报文中有主体,有些没有。
        上图请求报文使用是其中的GET方法,常用的HTTP方法如下:

方法描述是否包含主体
GET从服务器获取一份文档,如访问某个网站首页
HEAD只从服务器获取文档的首部,可以用来查看资源是否存在、是否被修改等
POST向服务器发送需要处理的数据,如form表单数据
PUT让服务器用请求主体去修改对应URL的内容,如果URL不存在,就创建一个用请求URL命名的新文档
TRACE对报文进行追踪,目的地服务器会返回一个TRACE响应,并在响应主体中携带原始请求报文
OPTIONS用来查看服务器支持的通用于各种资源的方法,或者某个指定资源的方法
DELETE让服务器删除请求URL所指定的资源。但HTTP规范允许服务器在不通知客户端的情况下,撤销请求。

        2.URL。告知服务器要对哪个资源执行请求方法。上图请求报文告知服务器要对根目录下的文件执行GET方法。
        3.HTTP版本号。告知服务器客户端使用的是哪种HTTP。上图请求报文告知服务器,客户端使用的版本是HTTP/1.1。在HTTP/1.0之前,并不要求请求行中包含HTTP版本号。
响应报文
        上图是一个响应报文的截图,它的第一行就是起始行,也被成为响应行,它包含了3个部分:HTTP版本号、状态码、原因短语。
        1.HTTP版本号。表明响应报文使用的是哪种HTTP。上图响应报文表明使用的版本是HTTP/1.1。在HTTP/1.0之前,并不要求响应行中包含HTTP版本号。使用版本号是为了给HTTP应用程序提供判断条件:在与低版本的HTTP应用程序通信时,不能使用任何高版本的新特性。
        2.状态码。告知客户端发生了什么事情。上图响应报文中的200状态码,表明响应成功。目前状态码分类如下:

整体范围已定义范围分类
100~199100~101信息提示
200~299200~206成功
300~399300~305重定向
400~499400~415客户端错误
500~599500~505服务器端错误

        当前的HTTP版本只为每类状态码定义了几个代码。如果收到不认识的状态码,可能是人为基于当前协议的扩展定义。可以根据它所处范围,作为那个类别中一个普通成员来处理。
        3.原因短语。原因短语是响应起始行的最后一个组件。它为状态码提供了文本形式的解释,也是和状态码成对出现的,可以用来说明在请求期间发生了什么。

二.首部

        跟在起始行后面的就是首部。HTTP首部字段向请求和响应报文中添加了一些附加信息,它们本质上来说就是一些名/值对的列表。首部和方法配合工作,共同决定了客户端和服务器能做什么事情。
        HTTP规范定义了几种首部字段,应用程序也可以随意发明自己所用的首部。HTTP首部可以分为五个主要的类型:
        1.通用首部。有些首部提供了和报文相关的最基本的信息,它们被称为通用首部。HTTP/1.0后又引入了通用缓存首部,允许HTTP应用程序缓存对象本地副本,这样就不用总是直接从源端服务器获取了。
        2.请求首部。只在请求报文中有意义的首部,用于说明是谁或什么在发送请求、请求源自何处,或者客户端的喜好及能力。
        3.响应首部。只在响应报文中有意义的首部,为客户端提供了一些额外信息,比如谁在发送响应,响应者的功能,甚至与响应相关的一些特殊指令。
        4.实体首部。实体首部提供了有关实体及其内容的大量信息,从有关对象类型的信息,到能够对资源使用的各种有效的请求方法。总之,实体首部可以告知报文的接收者它在对什么进行处理。
        5.扩展首部。扩展首部是非标准的首部,由应用程序开发者创建,但还没被添加到已批准的HTTP规范中去。即使不知道这些扩展首部的含义,HTTP程序也要接受它们并对其进行转发。

三.主体

        HTTP报文的第三部分是可选的实体主体部分。实体的主体是HTTP报文的负荷,也就是HTTP要传输的内容。HTTP报文可以承载很多类型的数据:图片、视频、HTML文档、软件应用程序等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值