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,一经查实,立即删除!

相关文章

UVA272--TEX Quotes【字符串】

TEX Quotes UVA - 272 题目传送门 题目大意&#xff1a;将输入字符串中的所有对双引号的做双引号改为 &#xff0c;右双引号改为 。 解决方法&#xff1a;遍历一遍及时修改即可。 AC代码&#xff1a; #include <cstdio> #include <iostream> #include <…

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 …

UVA----10082 WERTYU【字符串】

WERTYU UVA - 10082 题目传送门 题目大意&#xff1a;按照所给的键盘样式&#xff0c;以及错误的字符串&#xff0c;输出正确的字符串&#xff0c;其输入的每一个字符都按照键盘样式向右错移了一位。 解决方法&#xff1a;将整个键盘用数组存起来&#xff0c;遍历一遍即可。…

关于C生成的汇编与C++生成的汇编在函数名称上的差异

最近用到ucos&#xff0c;这个RTOS本身是用C语言和部分汇编编写&#xff0c;而自己又打算用C来写应用&#xff0c;在其中遇到几个问题&#xff0c;一番折腾之后&#xff0c;让我更加深刻认识到了在一些一般不注意的细节上&#xff0c;C与C的不同。 1、对于ucos&#xff0c;虽…

UVA401 ​​​​​​​Palindromes【字符串】

Palindromes UVA - 401 题目传送门 题目大意&#xff1a;给你一个字符串&#xff0c;判断其是回文串还是镜像串。 AC代码&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #…

IIS 5 与IIS 6 原理介绍

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

UVA340 ​​​​​​​Master-Mind Hints【数组】

Master-Mind Hints UVA - 340 题目传送门 题目大意&#xff1a;先输入一个整数n&#xff0c;表示有n个数字&#xff0c;下面第一行代表正确答案&#xff0c;其下每一行代表用户猜的答案&#xff0c;需统计其有多少数字位置正确&#xff08;A&#xff09;&#xff0c;有多少数…

教你如何把自己从好友的QQ中删除

在QQ中&#xff0c;有些人看了不太顺眼&#xff0c;真不知当初为何让他加自己为好友的&#xff01; 那有什么办法&#xff0c;可以把自己从对方的QQ中删除呢&#xff1f; 其实&#xff0c;用QQ就可以轻松搞定&#xff01; 让我来为你支一招吧&#xff01; 打开QQ&#xff0…

UVA1583 Digit Generator

Digit Generator UVA - 1583 题目传送门 题目大意&#xff1a;若x的各位数之和加上x本身等于y&#xff0c;则证明x是y的生成元&#xff0c;求输入数字n的最小生成元。 AC代码&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> …

C++内存详解

伟大的Bill Gates 曾经失言&#xff1a; 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序&#xff0c;往往提心吊胆。如果不想触雷&#xff0c;唯一的解决办法就是发现所有潜伏的地雷并且排除它们&#xff0c;躲是躲不了的。本文的内…

UVA1584 ​​​​​​​Circular Sequence【字符串】

Circular Sequence UVA - 1584 题目传送门 题目大意&#xff1a;输入一个环形字符串&#xff0c;需输出其最小字典序的形式的字符串。 AC代码&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #includ…

UVA1585 Score

Score UVA - 1585 题目传送门 题目大意&#xff1a;输入一个字符串&#xff0c;O的分数为1&#xff0c;若出现连续的O&#xff0c;如OOOO...&#xff0c;分数为1,2,3,4...&#xff0c;X为0分&#xff0c;求最终的分数 AC代码&#xff1a; #include <cstdio> #includ…

operater int()

class Number { int number; public: explicit Number(int n){number n;} operator int() //注意一定不能声明返回值 { return number; } }; int main () { Number n1 Number(100); int n2 n1; cout << n2 << endl; re…

UVA1586 ​​​​​​​ Molar mass

Molar mass UVA - 1586 题目传送门 题目大意&#xff1a;给你一个只包含C,H,O,N分子式&#xff0c;其中C,H,O,N的原子量分别为&#xff1a;12.01,1.008,16.00,14.01&#xff0c;求其分子量 AC代码&#xff1a; #include <cstdio> #include <iostream> #includ…

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

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

UVA1225 ​​​​​​​Digit Counting

Digit Counting UVA - 1225 题目传送门 题目大意&#xff1a;输入一个数字T&#xff0c;代表有T组测试数据&#xff0c;下面每行有一个整数n&#xff0c;求将1到n的数字连成一串后每个数字出现的个数。 AC代码&#xff1a; #include <cstdio> #include <iostream&…

Chess Queen【数学】

Chess Queen UVA - 11538 题目传送门 题目大意&#xff1a;输入两个整数n,m&#xff0c;在n行m列的棋盘中放入白黑两个棋子&#xff0c;棋子在同一行、同一列或同一对角线上能相互进攻&#xff0c;问有多少种摆放方案。 AC代码&#xff1a; #include <cstdio> #incl…

Java开发中保证接口的幂等性问题

目录 1、解决方案 2、使用token保证接口幂等性的例子 3、在实际项目中&#xff0c;如何有效地使用token法来保证接口的幂等性&#xff1f; 4、3示例中如何获取请求中的 token 5、如果token验证失败&#xff0c;如何处理 6、在上述示例代码中加上token过期后重置的功能 7…

typedef 的四个用途和两大陷阱

>>>>>用途一&#xff1a;定义一种类型的别名&#xff0c;而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如&#xff1a;char* pa, pb; // 这多数不符合我们的意图&#xff0c;它只声明了一个指向字符变量的指针&#xff0c; // 和一个字符变量&am…

Triangle Counting【数学】

Triangle Counting UVA - 11401 题目传送门 题目大意&#xff1a;输入一个整数n&#xff0c;求在1到n中选取三条边能够组成多少种三角形。 AC代码&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #in…