首部和方法配合工作共同决定了客户端和服务器能做些什么事情. 首部可以出现在请求和响应报文中,大致来分的话,可以分为那么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. 在海思hisiv100nptl平台上交叉编译并安装SRS

    ./configure --with-arm-ubuntu12 && make 须要安装: apt-get installgcc-arm-linux-gnueabi     ,但hi3 ...

  2. 自动添加需要编译的源文件Android.mk模板

    自动添加需要编译的源文件列表 添加第三方静态库.动态库的依赖   假设我们的项目依赖 libmath.a, libjson.a, libffmpeg.so 这几个第三方库文件,项目包含如下几个模块:a ...

  3. python 集合set remove update add

    1. 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合对象是一组无序排列hashable value:集合成员可以做字典的键. 集合就像是 list 和 dict 的 ...

  4. dm8148 开发之---IDR帧

    IDR帧属于I帧. 解码器收到IDR帧时,将所有的参考帧队列丢弃(用x264_reference_reset函 数实现——在encoder.c文件中).这点是所有I帧共有的特性,但是收到IDR帧 时, ...

  5. 使用Salt-ssh部署Salt-minion之源码安装(二)

    二.源码安装篇 使用salt-ssh功能要求客户端系统python版本2.6+ 1.salt-minion端环境: 系统:SUSE SP3 64bit python版本:2.6.6 RPM包:pcre ...

  6. Mustache(2)

    Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档.当然不同的开发语言有不同模板引擎,如 Javascript 下的 Hogan . ...

  7. cocos2d-x 游戏优化方案

    优化的方案: 引擎底层优化.纹理优化.渲染优化.资源缓存.内存优化. 纹理优化: cocos2d-x 底层是OPenGL ES实现的. 对于图案片载入的内存是2的幂次方. 使用的图片是100*128 ...

  8. Linux下用户管理、目录结构

    linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录. 目录介绍: / root,存放root用户的相关文件 home,存放普通用户的相关文 ...

  9. Python动态网站的抓取

    网页下载器 # coding:utf-8import requestsimport urllib2import systype = sys.getfilesystemencoding()class H ...

  10. hdu 5185(DP)

    不错的一道dp题目,一开始想了一种N*N的dp,后面就一直想怎么优化,然后就一直都在坑中了. 这题题解还是看早了,应该再多想会的,多换种表示状态的方法再想想. dp[i][j]=dp[i-j][j]+ ...