热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTTP协议报头信息

报头每一个报头都是由[名称+:+空格+值+]组成。有四种不同类型的报头:通用报头:可用于请求,也可以用于响应,它是作为一个整体而不是特定的资源与事务相关联。请求

报头

每一个报头都是由 [名称 + ":" + 空格 + 值 + ] 组成。有四种不同类型的报头:


  • 通用报头:可用于请求,也可以用于响应,它是作为一个整体而不是特定的资源与事务相关联。

  • 请求报头:允许客户端传递关于自身的信息和希望得到的响应格式。

  • 响应报头:服务端关于传递自身信息的响应。

  • 实体报头:定义被传输资源的信息,可以用于请求,也可以用于响应。


 

注意,每个报头后必须以 (即 \r\n)结尾,报头与主体之间以 分割。

 

通用报头

通用头包含请求和响应消息都支持的头域,但不能用于实体报头。对通用报头的扩展要求通讯双方都支持此扩展,若存在不支持的通用报头,一般会作为实体头域处理。

 

Cache-Control:指定请求和响应遵循的缓存机制。

     public 指示所有的内容都将被缓存(客户端和代理服务都可缓存)

     private 默认值,指示内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不能缓存)

     no-cache 指示请求或响应消息不能缓存。

     no-store 指示所有的内容都不会被缓存到缓存或 Internet 临时文件中。

     max-age 指示缓存的内容将在多少秒后失效,仅在 HTTP/1.1 可用,与 Last-Modified 一起使用时,优先级更高。

     must-revalidate 若缓存失效,请求必须发生到服务器以进行重新验证。

 

Date:表示消息产生的日期和时间。

Pragma:唯一值为 no-cache,表示服务器必须返回一个刷新后的文档。其作用等价于 Cache-Control: no-cache 。

     在 HTTP/1.0 版本中,只实现了 Pragma: no-cache,而 Cache-Control 是在 HTTP/1.1 引入的。

Connection:允许发送指定连接的选项。

     keep-alive 客户端与服务器的连接不关闭,后续会再次使用这一条连接。

     close 表示一个请求完成后,客户端与服务器断开连接。

Transfer-Encoding:标明报文主体的传输编码方式。

     若是请求和响应的头信息中都要 Transfer-Encoding: chunked , 表明回应将由数量未定的数据快组成。在每个非空的数据块之前,会一个 16 进制的数值,表示这个块的长度。最后是一个大小为 0 的块,表示本次回应的数据发送完毕。

Upgrade:升级为其他协议,允许服务器指定一种新的协议或新的协议版本,与响应编码 101(切换协议)配合使用。

Via:代理服务器相关信息。

 

请求报头

请求报头允许客户端向服务端传输请求的附加信息以及客户端自身的信息。在 HTTP/1.1 协议中,所有的请求头,除 Host 外,都是可选的。

 

Accept:用于指定客户端接受哪些类型的信息。

Accept-Charset:用于指定客户端接受的字符集。

Accept-Encoding:用于指定客户端可接受的内容编码。如 gzip、deflate

Accept-Language:用于指定客户端可接受的自然语言。如 zh-cn、de

Authorization:用于证明客户端有权限查看某个资源。

COOKIE:用于将 COOKIE 值发送给服务器。

Host:用于指定被请求资源的主机和端口号。

If-Modified-Since:请求时指定资源的最后修改时间,用于比较资源的更新时间,与 Last-Modified 一起配合 Cache-Control 使用。

     当资源过期时(Cache-Control 中 max-age 设置),发现资源有 Last-Modified 声明,则再次向服务器请求时带上 If-Modified-Since,表示请求时间。服务器收到请求后发现头有 If-Modified-Since ,则与被请求的资源进行最后修改时间进行对比。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(200);若最后修改时间较旧,说明资源没有修改,会响应 304,告知浏览器继续使用保存的 cache 。

If-None-Match:请求时加上的资源 ETag 值,用于比较实体标识(ETag),与 ETag 一起配合 Cache-Control 使用。

     当资源过期时(Cache-Control 中 max-age 设置),发现资源有 ETag 声明,则再次向服务器请求带上 If-None-Match (ETag 值)。服务器收到请求后发现头 If-None-Match,则与被请求资源相应校验串进行对比,返回 200 或 304 。

Referer:用于指定客户端是从哪个资源来访问服务器的,可用于防盗链。

User-Agent:允许客户端将其操作系统、浏览器和其它属性告诉服务器。

 

响应报头

响应报头允许服务器传递不能放在状态行中的附加信息,以及关于服务器的信息和对 Request-URL 所标识的资源进行下一步访问的信息。

 

ETag:缓存相关的头,可用于实时更新。和 If-None-Match 配合使用。

     ETag 主要作用是在文件后面添加一个唯一的参数,该参数由服务器生成,并随着文件的改变而改变。下次浏览器只需要重新获取 ETag 发送了变化的文件。

Location:用于重定向一个新的位置。该响应状态码为 302(临时重定向),常用于在更换域名时。

Server:与 User-Agent 相对应,包含了服务器用来处理请求的软件信息。

WWW-Authenticate:包含在 401(为授权)响应信息中,当客户端收到 401 响应消息,并发送 Authorization 报头请求服务器对其进行验证时,服务器端响应报头就会包含该消息。

 

实体报头

实体报头定义了关于实体的元信息,实体信息一般由实体报头和实体组成。

 

Content-Encoding:指明数据的压缩方法。发送数据可以是任何格式,我们可以把数据压缩后再发送

     客户端请求时,Accept-Encoding 指明可以接受哪些压缩方法。

Content-Language:描述资源所用的自然语言。

Content-Length:指明响应的实体正文的长度。

     对于 HTTP/1.1 引入的持久连接机制,一个 TCP 连接可以传送多个响应,此时要区分数据包是属于哪一个响应的。Content-Length 指明本次响应的数据长度,当到达指定的长度后,后面的字节就属于下一个响应了。

Content-Type:指明发送给接收者的实体正文的媒体类型(MIME)。

     客户端请求时,Accept 指明可以接受哪些类型。

Content-Disposition:指明浏览器以下载的方式打开数据。

Last-Modified:指明资源最后修改的时间(该文件在服务器端最后修改的时间)。

     当 Last-Modified 与 ETag 一起使用时,服务器会优先验证 ETag。

Expires:指明响应文档过期的日期和时间。当文档过期后,会重新从服务器获取,并更新缓存。

     为了让代理服务器或浏览器在一段时间后更新缓存的页面,可通过 Expires 指定页面过期的时间。当设置为 0 时,表示不让浏览器缓存页面。Expires 等同与 Cache-Control: max-age ,但若同时存在,则会被后者覆盖。Expires 属于 HTTP/1.0 的产物,从 HTTP/1.1 开始,使用 Cache-Control: max-age= 代替。

 

 


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
author-avatar
a_2502881181
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有