HTTP首部(1)

1、报文首部

   

  HTTP协议的请求和响应必定包含HTTP首部,它包括了客户端和服务端分别处理请求和响应提供所需要的信息。报文主体字儿是所需要的用户和资源的信息都在这边。 

  HTTP请求报文组成

         方法,URL,HTTP版本,HTTP首部字段

  

  HTTP响应报文组成

         HTTP版本,状态码(数字和原因短语),HTTP首部字段

  

2、HTTP首部字段

  2.1  首部介绍

  HTTP首部信息传递了重要的信息,是构成HTTP报文的要素。

  

  2.2 HTTP首部字段结构

  首部字段结构

         首部字段名:字段值

  另外,字段值对应单个HTTP首部字段可以有多个值,中间用逗号间隔。如

        Keep-Alive: timeout=15,max=100

  2.3 HTTP的4种首部字段类型

    通用首部字段:请求报文和响应报文两方都会使用的首部;

    请求首部字段:从客户端到服务端发送的请求报文时使用的首部。补充了请求的附加内容,客户端信息、响应内容相关优先级信息;

    响应首部字段:从服务端到客户端发送的响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息;

    实体首部字段:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等于实体相关的信息。

      

   请求首部字段

  

  响应首部字段

  

  

  2.4 其他首部字段

  端到端首部(end-to-end Header)

         分在此类别中的首部会转发请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。

  逐跳首部(Hop-by-hop Header)

         分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。逐跳首部字段只对concention,keep-alive,proxy-authenticate,proxy-authorization,trailer,te,transfer-encoding、upgrade这8个首部字段有效,其他的字段都为端到端首部。

3、HTTP通用首部字段

  3.1 cache-control 

       

 

  Cache-Control: 是否能缓存的指令

  3.1.1   public、private

  Cache-Control :public:其他用户也可利用缓存;

  Cache-Control :private:响应只以特定的用户作为对象;缓存服务器只会对特定用户提供缓存服务,其他用户则不会。

  

  3.1.2 no-cache 

  Cache-Control :no-cache:为防止从缓存中返回过期的资源,

  当请求首部中包含no-cache时则表示客户端将不会接收缓存过的响应,于是,中间的缓存服务器会把客户端请求转发给源服务器。

  当响应首部中包含no-cache时则表示缓存服务器不对资源进行缓存。源服务器以后也将不再对缓存服务器请求中的资源进行有效性确认且禁止对其响应资源进行缓存操作。

  Cache-Control :no-cache=Location

       无参数值的首部字段可以使用缓存,有参数值不使用缓存,指定首部字段具体值的方式,只能在响应指令中指定。

  3.1.3 no-store

  Cache-Control:no-store  控制可执行缓存的对象指令,使用该指令,暗示请求和响应中包含机密信息

       no-cache:不缓存过期资源

       no-store:不在本地存储请求和响应的任一部分

  3.1.4 s-maxage

  指定缓存期限和认证的指令

  Cache-Control: s-maxage=604800(单位:秒)

  s-maxage与max-age指令相同,但是不同点是s-maxage指令只适用于供多位用户使用的公共缓存服务器(一般为代理),也可以说对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用。同时,使用此字段后,expires和max-age字段无效。

  3.1.5 max-age

  资源保存为缓存的最长时间 

  Cache-Control: max-age=604800(单位:秒)

       客户端请求包含该字段:如果请求的资源的缓存时间数值比指定时间数值小,则客户端直接接受缓存的资源,当max-age为0时,那么缓存服务器把请求转发给源服务器。

       服务器返回包含该字段:缓存服务器将不对资源进行有效性在确认。

  HTTP/1.1: max-age优先处理,expires忽略;

  HTTP/1.0: expires优先处理,max-age忽略。

  3.1.6 min-fresh

  要求缓存服务器返回至少还未过指定时间的缓存资源

  Cache-Control: min-fresh=60(单位:秒)

  当指定min-fresh为60秒过后,过了60秒的资源都无法作为响应返回。

  3.1.7 max-stale:表示缓存资源,即使过期也照样接收

  Cache-Control: max-stale =60(单位:秒)

  max-stale未指定参数值,则表示无论经过多久,客户端都会接收响应;如果指定了具体参数值,那么即使过期,只要仍处于max-stale指定时间内,仍旧会被客户端接收。

  3.1.8 only-if-cached 

  Cache-Control: only-if-cached

  表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。或者说,如果请求资源缓存服务器上存在,则永远不再重新加载响应,也不会确定资源有效性,如果不存在,则返回状态码504 gateway timeout。

  3.1.9 must-revalidate

  代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效

  Cache-Control: must-revalidate

  如果代理无法连通源服务器,则返回504 gateway timeout。

  并且must-revalidate与max-stale冲突,must-revalidate使max-stale无效。

  3.1.10 proxy-revalidate

  要求所有的缓存服务器在接收客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性

    Cache-Control: proxy-revalidate

  3.1.11 no-transform

  无论在请求还是响应中,缓存都不能改变实体主体的媒体类型,主要为了防止缓存或代理压缩图片等操作。

  Cache-Control: no-transform

  3.2  connection

  作用:控制不在转发给代理的首部字段和管理持久连接。

      

  

       

  3.3  date 

  三种表示格式,主要是协议版本不同。

  

  

  3.4  Prame

  HTTP/1.1之前版本遗留字段,向后兼容,Parame:no-cache,为通用首部字段,只用于客户端发送的请求中。客户端要求所有中间服务器不返回缓存的资源。通常情况下Parame:no-cache和Cache-Control :no-cache都在请求中包含。

  

  

  3.5 trailer

  此字段会事先说明在报文主体后记录了哪些首部字段,该首部字段可应用在HTTP/1,1版本分块传输编码时。

  

  

  

   

  3.6   transfer-encoding 

  传输报文主体时采用的编码方式。HTTP/1.1的传输编码方式仅对分块传输编码有效。

  

  

  

  3.7 upgrade

  此字段只能作用于相邻服务器之间,如果相邻服务器则表示监测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。

  如果不是相邻服务器则体现了connection的另一个作用:控制不在转发给代理的首部字段

   

  3.8 via

    此字段用于追踪客户端和服务端之间的请求和响应报文的传输路径。

  

  Via :首部是为了追踪传输路径,所以经常会在TRACE方法一起使用。

  3.9 warning

  HTTP/1.0:Retry-After →→→→HTTP/1.1:Warning

  Warning:【警告码】【警告主机:端口号】【警告内容】【日期时间】

  

转载于:https://www.cnblogs.com/tlxf-blog/p/11078366.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax

首先引入ajax.js文件 创建xmlhttpRequest对象 Code//创建XMLHttpRequest对象var xmlHttp;function newXMLHttpRequest() { if (window.XMLHttpRequest) { xmlHttp new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlHttp …

IIS 5 与IIS 6 原理介绍

[ 转] ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI 前几天有一个朋友在MSN上问我“ASP.NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样的?”我觉得这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题,…

SharePoint v3:忘掉模拟用户Impersonate,SPSecurity.RunWithElevatedPrivileges来了

回顾: 在SharePoint V2 大家应该都用过模拟用户Impersonate这个功能, 这个功能用来暂时提升某个用户的权限,比如某个普通用户的本来不能修改某个列表的值,但是我们功能需要在修改。 缺点: 我们使用这个模拟用户功能…

螺旋方阵问题【数组】

输入n&#xff0c;输出n阶螺旋方阵&#xff0c;下面为5阶螺旋方阵&#xff1a;1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 下面为我的代码&#xff1a; #include <cstdio> #include <iostream> #include &…

马鞍点问题【数组】

如果在一矩阵中元素A[i][j]满足A[i][j]为第i行的最小值&#xff0c;第j行的最大值&#xff0c;则称这个元素为这个矩阵的马鞍点&#xff0c;求m*n矩阵所有的马鞍点。若需求一个矩阵的所有马鞍点&#xff0c;其实只需将矩阵的每行的最小值与每列的最大值分别求出存在相应的数组中…

求二叉树节点个数、叶子节点、节点层次与宽度

需实现&#xff1a;&#xff08;1&#xff09;输出二叉树b的节点个数 &#xff08;2&#xff09;输出二叉树b的叶子节点个数 &#xff08;3&#xff09;求二叉树b中指定节点值&#xff08;假设所有节点值不同&#xff09;的节点的层次。 &#xff08;4&#xff09;利用层次遍历…

【数学】Chaarshanbegaan at Cafebazaar

题目描述 Chaarshanbegaan is a gathering event at Cafebazaar similar to TGIF events at Google. Some entertainment programs like pantomime, foosball, Xbox/PS4, and several board games are part of the event. You are going to set up a dart game in Chaarshanbe…

【思维】Congestion Charging Zone

题目描述 Tehran municipality has set up a new charging method for the Congestion Charging Zone (CCZ) which controls the passage of vehicles in Tehran’s high-congestion areas in the congestion period (CP) from 6:30 to 19:00. There are plate detection came…

【二分】LED

题目描述 A Light-Emitting Diode (LED) is a semiconductor light source, which emits light when an electric current of voltage higher than a threshhold is applied to its leads. ACM R&D recently reported that they have succesfully developed a new LED, na…

【模拟】Thanks, TuSimple!

题目链接&#xff1a;http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId5979 Thanks, TuSimple! Time Limit: 1 Second Memory Limit: 65536 KB In the very first sentence of the very first problem, we would like to give our sincere thanks to TuSimple,…

【二维差分】Monitor

Monitor 题目&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid6514 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 163840/163840 K (Java/Others) Total Submission(s): 600 Accepted Submission(s): 190 Problem Description Xiaoteng has a la…

【二分+二维前缀和】Largest Allowed Area

Largest Allowed Area 时间限制: 1 Sec 内存限制: 128 MB 提交: 146 解决: 54 [提交] [状态] [命题人:admin] 题目描述 A company is looking for land to build its headquarters. It has a lot of money and can buy as many land patches as it needs. Its goal, howev…

【数学】Floating-Point Hazard

Floating-Point Hazard 时间限制: 1 Sec 内存限制: 128 MB 提交: 106 解决: 42 [提交] [状态] [命题人:admin] 题目描述 Given the value of low, high you will have to find the value of the following expression: If you try to find the value of the above express…

【线段树】Segment Tree

Segment Tree 时间限制: 1 Sec 内存限制: 512 MB 提交: 107 解决: 23 [提交] [状态] [命题人:admin] 题目描述 Mcginn opens the code which he wrote 25 years ago. Clever Mcginn wants to know how many positive interger n satisfied that the maximum c can reach w…

扶桑号战列舰【RMQ+分治】

扶桑号战列舰 时间限制: 1 Sec 内存限制: 128 MB Special Judge 提交: 197 解决: 63 [提交] [状态] [命题人:admin] 题目描述 众所周知&#xff0c;一战过后&#xff0c;在世界列强建造超无畏级战列舰的竞争之中&#xff0c;旧日本海军根据“个舰优越主义”&#xff0c;建造了扶…

大凤号装甲空母【找规律+矩阵快速幂】

大凤号装甲空母 时间限制: 1 Sec 内存限制: 128 MB 提交: 108 解决: 15 [提交] [状态] [命题人:admin] 题目描述 大凤号航空母舰很喜欢算术。 它&#xff0c;是旧日本海军中最为先进的航空母舰。 它&#xff0c;是旧日本海军中最为短命的航空母舰。 同时&#xff0c;她还是最平…

Degree Sequence of Graph G【模拟】

Degree Sequence of Graph G 时间限制: 1 Sec 内存限制: 128 MB 提交: 362 解决: 92 [提交] [状态] [命题人:admin] 题目描述 Wang Haiyang is a strong and optimistic Chinese youngster. Although born and brought up in the northern inland city Harbin, he has deep lov…

【动态规划】魔法石矿

【动态规划】魔法石矿 时间限制: 1 Sec 内存限制: 64 MB 提交: 116 解决: 27 [提交] [状态] [命题人:admin] 题目描述 为了找到回家的路&#xff0c;张琪曼施展魔法&#xff0c;从高维空间召唤出了一种叫作“读者”的生物&#xff0c;据说“读者”这种生物无所不能&#xff0c;…

简单类及成员实例【C#】

简单类及成员实例&#xff08;C#&#xff09; 题目描述 简单类及成员实例。定义了如下图所示类Student&#xff0c;根据下图和给出代码&#xff0c;补写缺失的代码。 using System; namespace sample{ class Student { public string studentid;//学号 p…

c#随机数的产生与输出【C#】

c#随机数的产生与输出 题目描述 编写一个实例方法Method01。该方法使用Random类随机产生n个3位数字&#xff08;如636&#xff09;的随机正整数&#xff0c;并把产生的随机数存入数组中并输出该数组int num Convert.ToInt32(Console.ReadLine()); using System; using System…