首部和方法配合工作共同决定了客户端和服务器能做些什么事情. 首部可以出现在请求和响应报文中,大致来分的话,可以分为那么5种:

  • 通用首部: request和response报文都可以使用的首部. 比如 Date 首部
  • 请求首部:request报文特有的,为服务器提供一些额外的信息. 比如accept首部
  • 响应首部:response报文特有的,为客户端提供信息.
  • 实体首部:用于对应实体主体部分的首部,比如用来说明主体部分数据类型的 Content-Type.
  • 扩展首部:非HTTP协议规定的首部,由开发者自己创建的. 即使不知道这些首部的含义,HTTP程序也要接受它们并进行转发.

通用首部

首部 描述
Connection 允许客户端和服务器指定与resquest/response连接有关的选项
Date 提供日期和时间标志,说明报文是什么时候创建的
MIME-Version 发送端使用的MIME版本
Trailer 如果报文采用了分块传输编码的方式,就可以用这个首部列出位于报文拖挂部分的首部的集合
transfer-Encoding 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式
Update 给出了发送端可能想要”升级”使用的新版本或协议
via 报文经过的中间结点
Cache-Control 用于随报文传送缓存指示
Pragma 另一种随报文传送指示的方式,但并不专用于缓存

请求首部

请求首部,顾名思义,只出现在请求报文中的首部,用于说明关于请求者的一些哲学思考…比如,我是谁(表明请求身份),我从哪里来(表明请求出处),我会干什么(客户端能力),我喜欢什么(客户端喜好)

关于客户端的信息性首部

其实之前我还真不知道,HTTP可以提供那么多信息. 其中最常用的是User-Agent首部.

Accept首部

Accept首部为客户端提供了一种将其喜好和能力告知服务器的方式,包括,它们想要什么,可以使用什么,以及它们不想要什么.

(突然情不自禁的哼起,你还要我怎样,要怎样,话说薛之谦这首歌写的真好,你突然来的短信就够我悲伤/我没能力遗忘 你不用提醒我/哪怕结局就这样/我还能怎样 能怎样)

条件请求首部

有时候客户端希望为请求添加上某些限制,比如,在请求一个文档的时候,就希望只在服务器上的文档和客户端之前的有区别时再请求. 这时候就可以使用这些首部了.

安全请求首部

HTTP支持一种简单的安全机制,简单来说就是 质询/响应认证. 也就是要求客户端在请求特定资源之前证明我就是我,是不一样的烟火. 所以这时候就需要一些安全相关的头部.

代理相关的首部

响应首部

响应报文的信息性首部

协商首部

安全响应首部

跟安全请求首部是对应的

实体首部

用来描述报文负荷的首部.
比如实体的信息性首部:

内容首部

提供与实体内容有关的特定信息,说明类型,尺寸,及处理它所需的其他有用信息.

实体缓存首部

缓存首部说明了关于缓存的
how 或者when

HTTP学习笔记05-首部的更多相关文章

  1. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

  2. C++ GUI Qt4学习笔记05

    C++ GUI Qt4学习笔记05   qtc++正则表达式 QIntValidator           --  只让用户输入整数 QDoubleValidator     --  只让用户输入浮 ...

  3. [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明

    作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...

  4. stm32寄存器版学习笔记05 PWM

    STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...

  5. [原创]java WEB学习笔记05:Servlet中的ServletConfig对象

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. Bash脚本编程学习笔记05:用户交互与脚本调试

    用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...

  7. xml基础学习笔记05

    Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档   * Xpatn.Xquery,是专门用来查询xml的语言   * 查询xml非常快   Xpatn.Xquery,是专门用来 ...

  8. Linux学习笔记05之网络基础知识

    一.OSI参考模型:适用于所有网络,现有模型,后有协议 1.应用层:应用程序.用户接口 2.表示层:编码转换.压缩.解压.加密等 3.会话层:建立.维护.拆除会话 4.传输层规定了应用程序的的接口 协 ...

  9. AMQ学习笔记 - 05. 客户端模板化

    概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTempl ...

  10. OpenCV 学习笔记 05 人脸检测和识别 AttributeError: module 'cv2' has no attribute 'face'

    1 环境设置: win10 python 3.6.8 opencv 4.0.1 2 尝试的方法 在学习人脸识别中,遇到了没有 cv2 中没有 face 属性.在网上找了几个方法,均没有成功解决掉该问题 ...

随机推荐

  1. hdu5794 A Simple Chess 容斥+Lucas 从(1,1)开始出发,每一步从(x1,y1)到达(x2,y2)满足(x2−x1)^2+(y2−y1)^2=5, x2>x1,y2>y1; 其实就是走日字。而且是往(n,m)方向走的日字。还有r个障碍物,障碍物不可以到达。求(1,1)到(n,m)的路径条数。

    A Simple Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  2. 什么是Web Services?

    什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描 ...

  3. Hibernate通过one-to-one元素的一对一映射

    正如我们在前面的例子中讨论过的,在hibernate中执行一对一映射有两种方法: 通过many-to-one元素 通过one-to-one元素 这里,我们将通过one-to-one元素进行一对一的映射 ...

  4. Eclipse 创建 XML 文件

    Eclipse 创建 XML 文件 打开新建 XML 文件向导 你可以使用新建 XML 文件向导来创建 XML 文件.打开向导的方式有: 点击 File 菜单并选择 New > Other 点击 ...

  5. bat遍历当前目录下的文件,批量重命名

    @echo off setlocal enabledelayedexpansion for %%x in (*) do ( if not "%%x"=="demo.bat ...

  6. GoogleMap-------manifest文件配置

    前言:在使用GoopleMap之前需要配置manifest文件 1.这个可有可无,com.xhm.meishi是项目的包名 <!-- 声明调用这个应用需要的权限 --> <permi ...

  7. 第11章 Docker Registry 相关问题

    11.1 我 docker push 的时候怎么报 authentication required 错误? 因为你没有登录.如果是向 Docker Hub 推送镜像,需要在注册一个用户: https: ...

  8. gitlab报错收集

    登录502报错 一般是权限问题,解决方法: /var/log/gitlab 如果还不行,请检查你的内存,安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行 ...

  9. Android无线测试之—UiAutomator UiSelector API介绍之六

    对象搜索—类名与包名 一.类名属性定位对象 返回值 API 描述 UiSelector calssName(String className) 完整类名匹配 UiSelector calssNameM ...

  10. Android UI开发第二十七篇——实现左右划出菜单

    年前就想写左右滑动菜单,苦于没有时间,一直拖到现在,这篇代码实现参考了网上流行的SlidingMenu,使用的FrameLayout布局,不是扩展的HorizontalScrollView. 程序中自 ...