一、HTTP消息结构
HTTP是基于客户端/服务端(C/S)的架构模型,HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
二、客户端请求报文格式
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行、请求数据四个部分组成
【1】请求行
由请求方法, URL, 协议版本 三部分组成,之间由空格分隔。eg:GET /hello.text HTTP/1.1
【2】请求头部
请求头部为请求报文添加了一些附加信息,用来说明服务器要使用的附加信息,由“名/值”对组成。
字段 | 解释 |
---|---|
Accept | 指定客户端能够接收的内容类型 |
Accept-Charset | 浏览器可以接受的字符编码集。 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 |
Accept-Language | 浏览器可接受的语言 |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 |
Authorization | HTTP授权的授权证书 |
Cache-Control | 指定请求和响应遵循的缓存机制 |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 |
Content-Length | 请求的内容长度 |
Content-Type | 请求的与实体对应的MIME信息 |
Date | 请求发送的日期和时间 |
Expect | 请求的特定的服务器行为 |
From | 发出请求的用户的Email |
Host | 指定请求的服务器的域名和端口号 |
If-Match | 只有请求内容与实体相匹配才有效 |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 |
If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 |
Max-Forwards | 限制信息通过代理和网关传送的时间 |
Pragma | 用来包含实现特定的指令 |
Proxy-Authorization | 连接到代理的授权证书 |
Range | 只请求实体的一部分,指定范围 |
Referer | 先前网页的地址,当前请求网页紧随其后,即来路 |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) |
User-Agent | User-Agent的内容包含发出请求的用户信息 |
Via | 通知中间网关或代理服务器地址,通信协议 |
Warning | 关于消息实体的警告信息 |
【3】空行
请求头部后面的空行是必须的
【4】请求正文
请求数据也叫主体,可以添加任意的其他数据
扫描二维码关注公众号,回复:
4634648 查看本文章
三、服务器响应报文格式
服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行、响应正文。
【1】状态行
由HTTP协议版本号, 状态码, 状态消息 三部分组成,之间由空格分隔 。eg:HTTP/1.1 200 OK
【2】消息报头
用来说明客户端要使用的一些附加信息
字段 | 解释 |
Cache-Control | 告诉浏览器或者其他客户,什么环境可以安全地缓存文档 |
Connection | 当client和server通信时对于长链接如何进行处理 |
Content-Encoding | 数据在传输过程中所使用的压缩编码方式 |
Content-Type | 数据的类型 |
Date | 数据从服务器发送的时间 |
Expires | 应该在什么时候认为文档已经过期,从而不再缓存它? |
Server | 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置 |
Set-Cookie | 设置和页面关联的cookie |
Transfer-Encoding | 数据传输的方式 |
【3】空行
消息报文后面的空行是必须的
【4】响应正文
服务器返回给客户端的文本信息