HTTP消息头

前言

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

请求头

HTTP请求报文由3部分组成:请求行+请求头+请求体
HTTP请求报文
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。

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

③是协议名称和版本号。

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

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

请求报文头属性

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

    1
    Accept:text/plain
  • Cookie

  • Referer

  • 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
    1
    2
    3
    4
    5
    6
    7
    8

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

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

    # 响应头