HTTP学习笔记05-首部

首部和方法配合工作共同决定了客户端和服务器能做些什么事情. 首部可以出现在请求和响应报文中,大致来分的话,可以分为那么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-首部的更多相关文章
- 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归
机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...
- C++ GUI Qt4学习笔记05
C++ GUI Qt4学习笔记05 qtc++正则表达式 QIntValidator -- 只让用户输入整数 QDoubleValidator -- 只让用户输入浮 ...
- [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明
作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...
- stm32寄存器版学习笔记05 PWM
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...
- [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Bash脚本编程学习笔记05:用户交互与脚本调试
用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...
- xml基础学习笔记05
Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档 * Xpatn.Xquery,是专门用来查询xml的语言 * 查询xml非常快 Xpatn.Xquery,是专门用来 ...
- Linux学习笔记05之网络基础知识
一.OSI参考模型:适用于所有网络,现有模型,后有协议 1.应用层:应用程序.用户接口 2.表示层:编码转换.压缩.解压.加密等 3.会话层:建立.维护.拆除会话 4.传输层规定了应用程序的的接口 协 ...
- AMQ学习笔记 - 05. 客户端模板化
概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTempl ...
- OpenCV 学习笔记 05 人脸检测和识别 AttributeError: module 'cv2' has no attribute 'face'
1 环境设置: win10 python 3.6.8 opencv 4.0.1 2 尝试的方法 在学习人脸识别中,遇到了没有 cv2 中没有 face 属性.在网上找了几个方法,均没有成功解决掉该问题 ...
随机推荐
- IOS项目开发中的文件和文件夹操作
+ (NSFileManager *)getNSFileManager { // iNSFileManager是一个静态变量 if (!iNSFileManager) { iNSFileManager ...
- 修改PHP session 默认时间方法
修改三行如下: 1.session.use_cookies把这个的值设置为1,利用cookie来传递sessionid 2.session.cookie_lifetime这个代表SessionID在客 ...
- OpenCV学习笔记十五:opencv_features2d模块
一,简介: 该库用于2D特征检测,描述与匹配.
- day8笔记
一.上节回顾 1,id() 内存地址2, == 比较的是值 is 比较的是内存地址 数字,字符串,有小数据池, #内存地址一样的 int -5--256 str:1,不能有空格. 2,长度不能超过20 ...
- java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation 解决办法
MyEclipse 启动tomcat 报错: java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: ...
- [Oracle] - Create DB on Oracle 12c for an Application
Let's say we are going to develop a application for a bank, or any other enterprise, this applicatio ...
- splay tree旋转操作 hdu 1890
很神奇的旋转操作. 目前没看到其他数据结构能实现这个功能.平衡树不好处理区间操作,线段树很难旋转.splay tree搞这个就很简单了. 下面用的这个模板跑了700ms,好慢,估计是删除操作太费时了, ...
- JS复制粘贴解决方案
var clipboardData = window.clipboardData; //for IE if (!clipboardData) { // for chrome window.prompt ...
- Unit redis-server.service is masked.
http://stackoverflow.com/questions/40317106/failed-to-start-redis-service-unit-redis-server-service- ...
- Server Objects Extension(SOE)开发(二)
前言 SOE的提供了REST和Soap两种模板,只要在模板特定的方法中添加自己的业务逻辑代码即可,开发流程非常的简单便捷.那怎么知道自己的业务逻辑代码该写在模板的那个方法里面呢?这就需要很好的理解SO ...