发布网友 发布时间:2022-09-01 08:43
共1个回答
热心网友 时间:2024-02-03 23:10
[toc]
HTTP报文是在HTTP应用程序之间发送的数据块,这些数据块的形式是文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。
HTTP报文是简单的数据块。每一条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。它们都由三部分组成;对报文进行描述的起始行(start line)、包含属性的首部(header)块,以及可选的,包含数据的主体(body)部分。
起始行和首部是由分隔的ASCII文本,每行都以一个有两个字符组成的行终止符作为结束,分别是:
这两个符号可以简写为CRLF。
实体的主体或者报文的主体是一个可选的数据块。与起始行和首部不同的是,主体中可以包含二进制数据,也可以为空。
其中,首部中给出了一些与主体先关的信息。
所有的报文可以分为两类:请求报文(request message)和响应报文(response message)。请求报文会向Web服务器请求一个动作。响应报文会将请求的结果返回给客户端。请求报文和响应报文的结构很相似。
请求报文的格式如下:
这是响应报文的格式:
注意,请求报文和响应报文只有起始行的语法不同。
请求的起始行以方法作为开始,用来告诉服务器要做些什么。
下面的是HTTP常用的方法
方法是用来告诉服务器做什么事情的,状态码则是告诉客户端,发生了什么事情。
状态码位于响应的起始行。比如,在行HTTP/1.0 200 OK中,状态码就是200。
下表列出了状态码的分类。
原因短语,它为状态码提供了文本形式的解释。比如在HTTP/1.0 OK 中OK就是原因短语。
原因短语是和状态码成对出现的。原因短语是状态码的可读版本。
HTTP首部分为如下几类:
常见的首部如下实例
为HTTP报文提供最基本信息的首部被称为通用首部。也就是基本上所有的报文都会有的。
HTTP/1.0引入了第一个允许HTTP应用缓存对象副本的本地副本首部,这样就不用需要总是从源端服务器获取了。
请求首部指示在请求报文中有意义的首部,用于说明是谁在发送请求、请求来自何处。
常用的请求信息首部如下:
Accept首部为客户端提供了告知服务器自己的喜好和能力,包括它们想要什么,可以使用什么。
有时客户端希望为请求加上某些*。
常用的如下:
HTTP本身就支持一种简单的机制,可以对请求进行质询/响应认证。这种机制要求客户端在获取特定资源之前,先对自身进行认证,这样就可以使得HTTP请求变得安全。
下面列出了关于安全的首部:
响应首部可以为客户端提供一些信息,比如谁在发送响应,响应者的功能等。
常见的响应首部如下:
HTTP 报文中的实体的主体是可选的。实体的主体是HTTP报文的负荷。就是HTTP传输的东西。
HTTP报文可以承载很多类型的数据:图片、视频,文本等。