1、HTTP 报文首部

HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息

1)HTTP请求报文:在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分组成。 

2)HTTP响应报文:在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分组成。 

在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息。

2、HTTP首部字段

1、概述:

在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用

使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容

HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分隔。

首部字段名: 字段值

例如,在 HTTP 首部中以 Content-T y pe 这个字段来表示报文主体的对象类型。

Content-Type: text/html

2、4 种 HTTP 首部字段类型:

1)通用首部字段(General Header Fields) 
请求报文和响应报文两方都会使用的首部。

2)请求首部字段(Request Header Fields) 
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息 
。 
3)响应首部字段(Response Header Fields) 
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

4)实体首部字段(Entity Header Fields) 
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

3、End-to-end首部和Hop-by-hop首部

HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分成 2 种类型。

1)端到端首部(End-to-end Header) 
分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。

2)逐跳首部(Hop-by -hop Header) 
分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。HTTP/1.1 和之后版本中,如果要使用 hop-by-hop 首部,需提供 Connection 首部字段。 
下面列举了 HTTP/1.1 中的逐跳首部字段。除这 8 个首部字段之外,其他所有字段都属于端到端首部。

Connection
Keep-A live
Proxy -A uthenticate
Proxy -A uthorization
Trailer
TE
Transfer-Encoding
Upgrade

3、HTTP1.1通用首部字段

通用首部字段是指,请求报文和响应报文双方都会使用的首部。包含字段及作用如下:

1)Cache-Control:通过指定首部Cache-Control的指令,就可以操作缓存的工作机制。如no-cache,public等。首部字段 Cache-Control 能够控制缓存的行为。

2)Connection:主要有两个作用,控制不再转发给代理的首部字段、管理持久连接。

3)Data:首部字段data表明创建HTTP报文和日期。

4)pragma :报文指令。与http1.1之前的版本兼容

5)Trailer:首部字段Trailer会事先说明在报文主体后记录了哪些首部字段,可以应用在HTTP1.1版本分块传输编码时使用。

6)Transfer-Encoding:规定了传输报文主体时采用的编码方式

7)Upgrade:用于检测HTTP协议及其他协议是否可以使用更高版本进行通信

8)Via :追踪客户端与服务器之间的请求响应和响应报文的传输途径。还可以避免请求回环的发生。

9)Warning:告知用户一些与缓存相关问题的警告

4、请求首部字段

请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关优先级等内容

5、响应首部字段

响应首部字段是由服务器向客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等信息。

6、实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体信息相关的信息

7、为Cookie服务的首部字段

1)机制:

Cookie的工作机制是用户识别及状态管理。web网站为了管理用户的状态会通过web浏览器把一些数据临时写入用户计算机内。接着当用户访问web网站时,可以通过通信方式取回之前发送的Cookie。

调用Cookie时,由于可校验Cookie的有效期,以及发送方的域、路径、协议等信息,所以正规发布的Cookie内的数据不会因来自其他 Web 站点和攻击者的攻击而泄露。

2)为Cookie服务的首部字段

   字段                  作用                 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段

3)Set-Cookie 

4)Cookie

Cookie: status=enable

首部字段Cookie会告知服务器,当客户端想获得HTTP状态管理支持时,就会在请求包中包含从服务器接收到的Cookie。接收多个Cookie时,同样可以以多个Cookie形式发送

HTTP 报文首部的更多相关文章

  1. 前端学HTTP之报文首部

    前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 ...

  2. http协议进阶(三)补充:报文首部

    之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...

  3. http协议(六)报文首部

    http请求和响应报文内容比较多,会分为大概四部分更新,最近比较忙,没太多时间整理- - 首先来看看报文结构吧 1.http请求报文 http请求报文由方法.URI.http版本.http首部字段等构 ...

  4. HTTP全部报文首部字段

    总结了一下HTTP各种报文首部字段. HTTP报文类型与结构 HTTP报文结构 报文首部 空行(CR+LF) 报文主体 HTTP报文类型 http有两种类型报文,请求报文和响应报文两种报文的首部结构如 ...

  5. TCP协议承载的DNS报文,DNS报文首部前多出两个字节的DNS报文长度字段,是何意义?

    一.TCP报文头部简介 ●源.目标端口号字段:占16比特.TCP协议通过使用"端口"来标识源端和目标端的应用进程.端口号可以使用0到65535之间的任何数字.在收到服务请求时,操作 ...

  6. TCP连接之报文首部

    在面试时,会经常被问到TCP报文的一些细节,可以说TCP报文是不少企业用来考察面试者对网络的掌握程度的一道题目. TCP连接作为网络传输的一个环节,是不可或缺的一部分.例如,OSI七层模型的应用层HT ...

  7. http协议进阶(四)报文首部

    之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...

  8. http协议基础(六)报文首部

    http请求和响应报文内容比较多,会分为大概四部分更新,最近比较忙,没太多时间整理- - 首先来看看报文结构吧 1.http请求报文 http请求报文由方法.URI.http版本.http首部字段等构 ...

  9. HTTP协议图--HTTP 报文首部之首部字段(重点分析)

    1.首部字段概述 先来回顾一下首部字段在报文的位置,HTTP 报文包含报文首部和报文主体,报文首部包含请求行(或状态行)和首部字段. 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富.首部字 ...

随机推荐

  1. 004-对象——public protected private PHP封装的实例

    <?php /** *public protected private PHP封装的实例 */ /*class tv { private $shengyin; function __constr ...

  2. rsync的服务启动脚本

    #!/bin/bash #author:Mr.chen # chkconfig: # description:This is Rsync service management shell script ...

  3. zset类型以及其操作

    sorted set类型 sorted sets类型以及其操作zset是set的一格升级版本,它在set的基础上增加了一格顺序属性,这一属性在添加元素的同时可以指定,每次指定后,zset会自动重新按照 ...

  4. flask框架中勾子函数的使用

    在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图函数避免编 ...

  5. CUDA Samples: heat conduction(模拟热传导)

    以下CUDA sample是分别用C++和CUDA实现的模拟热传导生成的图像,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第七章,各个文件内 ...

  6. Premake 生成 Makefile 的缺省配置

    Premake 生成 Makefile 的缺省配置(金庆的专栏 2017.7)premake5.exe --os=linux gmake生成的 Makefile 中有个 config, 用 make ...

  7. Iphone 消息通知(APNS)的3种方式 -- C# 和 nodejs

    发送 APNS 使用 p12 文件(C#) public static bool PushWithP12(string apnToken, string message) { _log.DebugFo ...

  8. Vue设置全局的方法和样式

    vue中我么会经常用到通用的一些全局的方法,如何左才能实现全局的复用减少代码累赘呢? 我们一般将公用的方法分装再utils.js文件中,然后再main.js主入口文件中将utils.js中的公共的方法 ...

  9. Vue之通过代理设置跨域访问

    我们使用脚手架创建的项目,可以在config项目中看到

  10. 【剑指offer】输入一颗二叉树的根节点,求二叉树的深度,C++实现

    原创博文,转载请注明出处! # 题目 # 举例        下图二叉树的深度为4,最长路径为1-2-5-7. # 思路(递归)       如果一个树只有一个节点,它的深度为1: 如果根节点只有左子 ...