HTTP消息头

前言

HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。

HTTP请求报文

HTTP请求报文由3部分组成:请求行+请求头+请求体

① 是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。

② 是请求对于的URL地址,它和报文头的HOST属性组成完整的请求URL。

③ 是协议名称和版本号。

④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

⑤ 是报文体,它将一个页面表单中的组件值通过param1=value&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于”/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。

HTTP请求报文属性

Accept
请求报文可通过一个”Accept”报文头属性告诉服务端,客户端接收什么类型的响应。

1
Accept:text/plain  

Referer

表示这是请求是从哪个URL进来的,比如想在网上购物,但是不知道选择哪家电商平台,你就去问度娘,说哪家电商的东西便宜啊,然后一堆东西弹出在你面前,第一给就是某宝,当你从这里进入某宝的时候,这个请求报文的Referer就是www.baidu.com

Cache-Control

对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置

Content-Type
关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
这些数据类型总称为MIME type,每个值包括一级类型和二级类型,之间用斜杠分隔。

MIME type还可以在尾部使用分号,添加参数。

Content-Type: text/html; charset=utf-8
上面的类型表明,发送的是网页,而且编码是UTF-8。

Content-Encoding
由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。

这个属性是用来告诉服务器能接受什么编码格式,包括字符编码,压缩形式(一般都是压缩形式)

Content-Encoding字段说明数据的压缩方法。

1
2
3
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate

Content-Length
一个TCP连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的。这就是Content-length字段的作用,声明本次回应的数据长度。

Content-Length: 3495告诉浏览器,本次回应的长度是3495个字节,后面的字节就属于下一个回应了。

Host

指定要请求的资源所在的主机和端口

User-Agent

告诉服务器,客户端使用的操作系统、浏览器版本和名称

HTTP相应报文

响应报文与请求报文一样,由三个部分组成(响应行,响应头,响应体)

① 是报文协议及版本

② 是状态码及状态描述

③ 是响应报文头,也是由多个属性组成

④ 是响应报文体,即返回给我们的数据

HTTP状态码

常见状态码

1
2
3
4
5
200 OK  表示成功
303 重定向,把页面重定向到其他页面
401 资源为修改,可以直接使用本地的缓存
404 找不到页面
500 服务端错误

HTTP响应报文属性

Cache-Control

响应输出到客户端后,服务端通过该属性告诉客户端该怎么控制响应内容的缓存

ETag

表示你请求资源的版本,如果该资源发生了变化,那么这个属性也会跟着变

Location

在重定向中或者创建新资源时使用

Set-Cookie

服务端可以设置客户端的cookie

参考

https://www.cnblogs.com/widget90/p/7650890.html