我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。

个人博客:传送阵

笔者微信:zhanghe15069028807,非诚勿扰。

HTTP首部

首部:指的就是一种格式而已,而这种格式指的就是名称+值,比如content-type:images/gif明确要求要传输的内容类型必须是gif的图片,这是一个响应的报文,在一个报文当中首部可以有多个.

首部大体可以分为五类:

  1. 通用首部

  2. 请求首部

  3. 响应首部

  4. 实体首部,用于指定实体的属性

  5. 扩展首部:非标准首部,可能是由程序开发者创建的,例如X-Forward-For

1、通用首部

一看名字就知道这是通用的首部,哪个和哪个通用呢?当中是请求和响应通用

connection:定义c/s之间关于请求的有关选项,比如对于http1.0版本来讲有一个首部有这样的
connection:keep-alive #由于1.0并不是原生支持保持连接,所以我们要明确指定,1.0默认是不支持的。
VIA: #报文经过了哪些代理,比如一个游戏服务器其实是内网,用的端口映射到外网,那么这防火墙就是一个代理。
cache-control: #缓存指示,1.1比较常用在这里先提一下,后面还会再讲,用于控制缓存的生效机制
pragma #这个选项知道即可,主要用于1.0的版本当中,功能与cache-control类似,与缓存相关

2、请求首部

2.1 必有首部

Client-IP     客户端的IP地址,为会要加IP?不是在封装的时候会封装的吗?下文当中有解释
HOST: 请求的主机名和端口号,加虚拟主机的原因是虚拟主机环境下用于不同的虚拟主机
Rferer: 指明了请求当前资源的原始资源的URL,从哪里跳转过来的,可用于防止盗链
User-Agent: 用户代理,使用什么工具发出的请求,就是用的什么浏览器
Accept首部: 用户标明客户自己更倾向的使用的方式。
accept-charset:支持使用字符表
accept-encoding:支持使用的编码方式
accept-language:支持使用的语言

client-ip:在这里加IP的原因是,当客户端的请求到达服务器的时候,源/目标IP 源/目标端口 都会被内核拆掉,应用层不知道这个数据认谁发起的,如果想要让位于用户空间的的http进程知道的话就得在应用层的信息也要加上IP地址,其实这个不加也是可以的,服务器也会有别的办法的。

rferer:如果我们在A网页还有超链接那么我们可以到B网页,那么到B网页的方式有两种,一是在浏览器输入URL,二就是从别的网页当中跳转过来,而rferer就是请求是从哪里过来的,不要小看这个功能,有的网站为了防止盗链就会拒绝从别的域名链接过来的连接,只能从通过URL访问。

accept:客户端要会要求服务器发送什么媒体类型,比喻客户端会要求服务器发什么字符集、编码、是否压缩、支持什么语言,接不接收图片,有的网址很有可能提供多种语言的页面,如果客户端在三次握手之后给服务器发送一个accept-language:chinaese,那么服务器如果有中文的网站就会把中文网页返回客户端,而不是只知道傻傻的返回英文网页。

2.2 条件请求首部

如果一个网站有很多的图片,客户端通过浏览器访问一次之后在客户端本地是有缓存的,我们下一次再访问这个网站的时候,客户端并不会上来就请求其页面,而是看看本地有没有缓存的,一旦有缓存的就会向服务器发送一个条件请求:自从XX时间之后有没有修改过资源,如果服务器回应没有修改过(304),客户端就使用本地缓存的,而不会请求新的,如果服务器回应有过改动的话(200),那么客户端会再次GET一个新的网页到本地。

expect:     客户端告诉服务器自己期待的行为
If-Modified-since:是否在指定时间以后修改过此资源
if-none-match: #一个都不匹配

2.3 安全相关首部

authorization: 客户端提交给服务端的认证数据,如账号密码
cookie: 第一版cookie客户端发送给服务器的身份标识
cookie2: 第二版cookie

cookie是客户端从服务器发送的身份标识。HTTP无状态的,也主是说我们访问一个网页之后过一会再次访问的话之前的痕迹也就没有了,因为HTTP是无状态的,但是实际上我们使用时情况并不是这样,用户通过网页版腾讯视频看了几个节目,下个星期之后再次打开腾讯视频,发现还有历史记录,这是怎样实现的呢?

如上图:其实是通过cookie来实现的,cookie只是有一个浏览器集成的软件,当我们访问某个网站的时候,网站给我们发一个令牌(cookie)用于验证我们的令牌,而cookie还有一个服务端在网站服务器上,HTTP由于是无连接的,所以并不记录我们的访问记录,而cookie是记录的,cookie令牌默认是保存到浏览器当中,当再次访问之前的网站时cookie就会结合服务器上的一个cookie服务端还原用户上次访问时的历史记录,当然浏览会先出示cookie而服务器会追踪cookie,cookie的工作机制在下文当中会有详细的介绍。

3、响应首部

3.1 必有首部

age:     响应持续时间,知道即可
server: 向客户端标明服务器程序名称和版本,告诉客户端是使用的apatch的哪个版本

3.2 协商首部

accept-ranges:   对当前的资源来讲,自己所能够接受的范围类型
vary: 首部列表,服务器会把各种搭配做成几个列表,让客户端挑一个客户端可以接收的列表,服务器会根据列表当中的内容挑选出最适合的版本发送给客户端

比如客户端告诉服务器自己可以接收gzip压缩的文件和不是xz压缩的格式,而服务器告诉客户端自己只能发送rar压缩的资源那么这次通信就会失败了。

3.3 安全相关首部

set-cookie: 服务器在某客户端第一次请求发给的令牌,上面说的cookie就是这里发的
set-cookie2: 这是二版的令牌
www-authentication: 质询,即要求客户提供账号和密码,51CTO就是这样

4、实体首部

4.1 必有首部

locationi: 资源的新位置,在使用301或者302时指定新的文件位置在什么地方
allow: 允许对此资源使用的请求方法,比如客户端使用options方法去测试服务器可以使用的资源请求方法,服务器会用allow返还

4.2 内容首部

content-encoding:告诉客户端自己的编码格式是什么
content-languge告诉客户端使用的语言是什么
content-location资源所处的实际位置
content-range 资源所处的范围
content-type 资源所有的类型

4.3 缓存首部

etag: 实体标签
expires: 过期期限,一个资源可以缓存多长时间
last-modified: 上一次的修改时间

nginx基础(3)的更多相关文章

  1. Nginx基础整理

    目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Nginx的主要企业功能 Nginx作为web服务器的主要应用场景包括: Nginx的安装 安装环境 快速安装命令集合 各个 ...

  2. nginx 基础文档

    Nginx基础 1.  nginx安装 2.  nginx 编译参数详解 3.  nginx安装配置+清缓存模块安装 4.  nginx+PHP 5.5 5.  nginx配置虚拟主机 6.  ngi ...

  3. Nginx基础教程PPT

    Nginx基础教程PPT By 马冬亮(凝霜  Loki) 一个人的战争(http://blog.csdn.net/MDL13412) pdf版本号下载 watermark/2/text/aHR0cD ...

  4. Linux - nginx基础及常用操作

    目录 Linux - nginx基础及常用操作 Tengine淘宝nginx安装流程 nginx的主配置文件nginx.conf 基于域名的多虚拟主机实战 nginx的访问日志功能 网站的404页面优 ...

  5. Nginx基础知识介绍

    Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...

  6. [转帖]nginx基础整理

    nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...

  7. 原创——Nginx基础

    Nginx基础 一.Nginx概述: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx ...

  8. Nginx基础优化

    Nginx基础优化 1.隐藏nginx header版本号 1.1查看版本号 [root@Nginx ~]# curl -I http://www.yunwei.cn HTTP/1.1 200 OK ...

  9. Nginx基础详细讲解

    Nginx基础详细讲解 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  10. nginx基础(二)

    二.nginx基础配置 (1)错误指向一个页面 http状态指向指定访问页面,在 /etc/nginx/conf.d/default.conf 中配置 error_page /50x.html; er ...

随机推荐

  1. (重点)Python深入之Python内存管理机制你会吗?

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:醍醐三叶 请注意:如果你平时学Python遇到问题找不到人解答?或者没有 ...

  2. 笔记||Python3之面向对象

    面向对象编程:简称OOP. 是一种程序设计思想.oop把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 在python中,所有数据类型都可以视为对象,也可以自定义对象.自定义的对象数据类 ...

  3. 每周一练 之 数据结构与算法(LinkedList)

    这是第三周的练习题,原本应该先发第二周的,因为周末的时候,我的母亲大人来看望她的宝贝儿子,哈哈,我得带她看看厦门这座美丽的城市呀. 这两天我抓紧整理下第二周的题目和答案,下面我把之前的也列出来: 1. ...

  4. 2019年Spring核心知识点整理,看看你掌握了多少?

    前言 如今做Java尤其是web几乎是避免不了和Spring打交道了,但是Spring是这样的大而全,新鲜名词不断产生,学起来给人一种凌乱的感觉,在这里总结一下,理顺头绪. Spring 概述 Spr ...

  5. 关于HPS和FPGA之间的桥接学习笔记一

    为了实现FPGA和HPS之间的存储器共享和数据传输,Altera SoC FPGA提供了两种方式用于FPGA和HPS通信.分别是FPGA to SDRAM和AXI bridge. FPGA to SD ...

  6. XML字符串转为Map集合

    public class xmlToMapUtils { /** * xml字符串转为map集合 * @param xmlStr * @return */ public static Map<S ...

  7. 从《彩色圆环》一题探讨一类环上dp的解法

    清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...

  8. git 版本检出checkout的方法笔记

    想检出指定版本,比如回退版本,将代码检出到老代码 git checkout 版本号 git reflog git checkout  标签名 1.git log 查看版本信息,复制版本号,执行git ...

  9. JCC 指令

    JCC跳转指令 JCC指条件跳转指令,CC就是指条件码. JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE 若为0则跳转:若相等则跳转 jump if zero;jump if eq ...

  10. 【HTML】--- 列表、表格、form表单标签

    Html常用标签(2) 上篇博客讲了些常用的html标签 :[HTML]---常用标签(1) 这里主要讲 列表.表格标签和 form表单标签. 一.列表.表格标签 1.列表标签 概念 把内容以列表的形 ...