图解HTTP读书笔记_第六章 http首部

6.1HTTP报文首部

1、http协议的请求和响应报文必包含HTTP首部

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

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

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

6.2 HTTP首部字段

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

2、HTTP首部字段结构:由首部字段名和字段值构成,中间用冒号“:”分隔。如Content-Type:text/htmlKeep-Alive:timeout=15,max=100

3、4种HTTP首部字段类型

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

请求首部字段(Request Header Fields):从客户端向服务器发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先等级信息

响应首部字段(Response Header Fields):从服务器端向客户端返回响应报文时使用的首部。补充了响应时的附加内容,也会要求客户端附加额外信息内容

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

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

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

【Hop-by-hop】分在此类的首部只对单次转发有效,会因通过缓存或代理而不再转发。在HTTP1.1版本和之后版本若要使用hop-by-hop,需要使用Connection首部字段。

下面8个是逐条首部字段

6.3HTTP1.1通用首部字段

通用首部字段是指,请求报文和响应报文双方都会使用的首部。

字段 作用
Cache-Control 通过指定首部Cache-Control的指令,就可以操作缓存的工作机制。如no-cache,public等
Connection 主要有两个作用,控制不再转发给代理的首部字段、管理持久连接
Data 首部字段data表明创建HTTP报文和日期
pragma 与http1.1之前的版本兼容
Trailer 首部字段Trauker会事先说明在报文主体后记录了哪些首部字段,可以应用在HTTP1.1版本分块传输编码时使用。
Tranfer-Encoding 规定了传输报文主体时采用的编码方式
Upgrade 用于检测HTTP协议及其他协议是否可以使用更高版本进行通信
Via 追踪客户端与服务器之间的请求响应和响应报文的传输途径。还可以避免请求回环的发生。
Warning 告知用户一些与缓存相关问题的警告

6.4 请求首部字段

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

字段 作用
Accept 告知服务器用户代理能够处理的媒体类型及媒体类型的优先级。可以使用type/subtype这种形式,一次指定多个媒体类型
Accept-Charset 告知服务器用户代理支持的字符集以及字符集的相对优先顺序
Accept-Encoding 告知服务器用户代理支持的内容编码以及内容编码的优先顺序(如gzip、compresss等)
Accept-Language 告知服务器用户代理能够处理的自然语言集以及自然语言集的相对优先级
Authorization 告知服务器,用户代理的认证信息(证书值)
Expect 告知服务器期望出现某种特定行为(因服务器无法理解客户端的期望作出回应而发生错误会返回状态码417)
From 告知服务器用户代理的用户电子邮件地址。
Host 告知服务器,请求的资源所处的互联网主机名和端口号。Host首部字段是在HTTP1.1规范内唯一一个必须被包含在请求内的首部信息。首部字段Host和以单台服务器分配多个域名的虚拟主机的工作机制有密切关系,这是首部字段Host存在的意义
if-Match 属于if-×××的条件请求,只有服务器接收到附带条件请求后判断为真才会执行请求。
if-Modified-Since 告知服务器if-Modified-Since字段值早于资源的更新时间,则希望能处理请求,而在指定if-Modified-Since字段值的日期之后,如果请求的资源都没有更新过,则返回状态码304Not Modified的响应
if-None-Match 与if-Match相反,用于指定if-none-match指定的字段值与请求资源的Etag(实体标记)不一致时,此时才告知服务器请求
if-Range 告知服务器若指定的if-range字段值和请求资源的Etag值或者时间一致时,则作为范围请求处理,反之则返回全体资源。
if-Unmodified-Since 告知服务器请求的资源只有在字段值内指定的日期时间后,未发生更新情况下,才能处理请求,若发生了更新,则以412Precoditrion Failed作为响应处理
Max-Forwards 通过trace或option方法发送包含该首部字段,该字段以十进制整数形式指定可经过的服务器最大数目。服务器在往下一个服务器转发请求之前,该字段减一,当为0时则不再进行转发,而是直接返回响应
proxy-Authorization 接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段proxy-Authorization的请求,以告知服务器认证所需要的信息
Range 对于只需要获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。收到该请求,会在处理请求之后返回状态码为206PartialContent的响应,当无法处理请求则会返回状态码200OK的响应和全部资源
Referer 告知服务器请求的原始资源的URI
TE 告知服务器客户端能够处理响应的传输编码方式及相对优先级
Uesr-Agent 会将创建请求的浏览器和用户代理名称等信息传递给浏览器

6.5 响应首部字段

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

字段 作用
Accept-Ranges 告知客户端服务器能否处理方为请求,以指定获取服务器某个部分的资源,可处理范围请求时指定其为bytes,反之则指定其为none
Age 告知客户端,源服务器在多久之前创建了响应。字段值的单位为秒。若创建该响应的服务器是缓存服务器,Age值是指缓存后响应再次发起认证到认证完成时间的值,代理创建响应时必须加上首部字段Age
Etag 告知客户端实体标识。它是一种可将资源以字符串形式做唯一标识的方式。服务器会为每份资源分配对应的ETag值。(有强弱之分,强ETag不论实体发生多么细微变化都会改变值,弱ETag只用于提示资源hi是否相相同)
Location 可以将响应接收方引导至某个与请求URI位置不同的资源。通常会配合3xx,提供重定向的URI。
Proxy-Authenticate 该字段会将由代理服务器所需要认证信息发送给客户端。
Retry-After 告知客户端应该多久之后再次发送请求。主要配合状态码503 Service Unavailable或者3xxRedirect响应一起使用
Server 告知客户端当前服务器上安装的HTTP服务器应用程序的信息,还有版本号和安装时启用的可选项
Vary 该字段可对缓存进行控制。源服务器会向代理服务器传达关于本地缓存使用方法的命令
www-Authenticate 用于HTTP访问认证

6.6实体首部字段

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

字段 作用
Allow 用于通知客户端能够支持Request-URI指定资源所有HTTP方法。当服务器收到不支持的HTTP方法时,会以状态码405 Method Not Allowed作为响应返回
Content-Encoding 告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码是指在不丢失实体信息前提下进行的压缩。主要有4种方式gzip、compress、deflate、identity
Content-Language 告知客户端,实体主体使用的自然语言
Content-Length 表明了实体主体部分的小大(字节为单位)
Content-Loacation 给出与报文主体部分相对应的URI
Content-MD5 是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
Content-Range 告知客户端作为响应返回的实体哪个部分符合范围请求。以字节为单位
Content-Type 说明实体主体内对象的媒体类型
Expires 告知客户端资源失效日期
Last-Modified 指明资源最终修改时间

6.7为Cookie服务的首部字段

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

2、类型

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

3、Set-Cookie

当服务器准备开始管理客户端的状态时,会事先告知各种信息

4、Cookie

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

6.8其他首部字段

HTTP首部字段是可以自行扩展的,因此在Web服务器和浏览器的应用上,会出现各种非标准的首部字段

字段 作用
X-Frame-Option 属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签的显示内容,主要目的是防止点击劫持(clickjacking)攻击
X-XSS-Protected 属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种策略,用于控制浏览器XSS防护机制开关
DNT 属于HTTP请求头部,是Do Not Track的简称,意为拒绝个人信息被收集,是表示被精准广告追踪的一种方法
P3P 属于HTTP响应头部,利用P3P(The Platform for Priavcy Preferences,在线隐私偏好平台)技术,可以让web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的
时间: 2024-11-05 18:48:30

图解HTTP读书笔记_第六章 http首部的相关文章

Java编程思想读书笔记_第三章

本章提到的关于==的部分,一个完整的实验如下: 1 class Test { 2 public static void main(String[] args) { 3 Integer i = new Integer(47); 4 Integer j = new Integer(47); 5 Integer i1 = 47; 6 Integer j1 = 47; 7 int i2 = new Integer(47); 8 int j2 = new Integer(47); 9 int i3 = 4

Javascript高级程序设计读书笔记(第六章)

第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新对象. 构造函数的问题:每个方法都要在每个实例上重新创建一遍: 理解原型对象: 无论何时,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象.默认情况下,所有原型对象都会自动获得一个constructor属性,这个属性包含一个指向proto

2016年4月16日_JAVA学习笔记_第六章克隆

1.克隆也就是创建一个变量的拷贝,两者相互独立. person p = new person(); person p1 = p; //仅仅是重新创建另外一个变量,引用的是同一个东西 person p_clone = p.clone();//创建上一个变量的克隆,两者没有关系 2.

《C++ Primer》读书笔记—第十六章 模板与泛型编程

---恢复内容开始--- 声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 1.面向对象编程和泛型编程都是处理在编写程序时不知道类型的情况,不同之处在于,OOP能处理类型在程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了. 2.泛型编程与面向对象编程一样,都依赖于某种形式的多态性.面向对象编程中的多态性在运行时应用于存在继承关系的类. 3.在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译

Java编程思想读书笔记_第7章

final关键字类似const: 1 import java.util.*; 2 3 public class FinalData { 4 static Random rand = new Random(47); 5 final int valueOne = 9; 6 final int i4 = rand.nextInt(20); 7 static final int INT_5 = rand.nextInt(20); 8 public static void main(String[] ar

Java编程思想读书笔记_第6章(访问权限)

四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 1 package access.dessert; 2 3 public class Cookie { 4 public Cookie() { 5 System.out.println("Cookie()"); 6 } 7 8 void bite() { 9 System.out.println("bite"); 10 } 11 } 12 13

Android深度探索(卷1)HAL与驱动开发--读书笔记(第六章)

Linux 驱动的工作方式:Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中.对于驱动来说,需要接收这些被写入的数据,并将它们通进PC 的井口.USB 等端口发送给设备.要实现这一过程就需要Linux 驱动可以响应应用程序传递过来的数据.这就是Linux 驱动的事件,这就是回调( callback )函数. 编写Linux驱动程序的步骤: 1)         建立Linu x 驱动骨架(装载和卸载Linu x 驱动):.Linux 内核在使用驱

【读书笔记】计算机网络1章:课程介绍、协议、分层

这是我在Coursera上的学习笔记.课程名称为<Computer Networks>,出自University of Washington. 由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了.这门课程在2013年左右录制,知识相对还是比较新的.覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细.学完这门课程之后对计算机网络会有比较深刻的了解. 本章讲述了这门课程的大致情况,讲述了协议.协议层等基本概念. 目标和动机 课程的主要目标就是介绍计算

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语