手机版

HTTP头信息摘要

时间:2021-09-10 来源:互联网 编辑:宝哥软件园 浏览:

本文是几篇与HTTP请求头和《HTTP权威指南》相关的文章的个人总结版,通俗易懂。

通常,HTTP消息包括从客户端到服务器的请求消息和从服务器到客户端的响应消息。客户端向服务器发送请求。请求头包含请求的方法、URI、协议版本和类似MIME的消息结构,该消息结构包含请求修饰符、客户端信息和内容。服务器以状态行响应,相应的内容包括消息协议版本、成功或错误代码加上服务器信息、实体元信息和可能的实体内容。

Http协议定义了许多与服务器交互的方式,其中有四种基本方式,即GET、POST、PUT和DELETE。一个URL地址用来描述网络上的一个资源,HTTP中的GET、POST、PUT、DELETE对应这个资源的搜索、修改、添加、删除四个操作,最常见的是GET和POST。GET一般用于获取/查询资源信息,POST一般用于更新资源信息。

HTTP头信息的解释

HTTP的头字段包括四个部分:通用头、请求头、响应头和实体头。每个标题字段由域名、冒号(:)和字段值组成。

通用头是客户端和服务器都可以使用的头,可以在客户端、服务器和其他应用程序之间提供一些有用的通用功能,例如日期头。

请求头对于请求消息来说是唯一的,它们为服务器提供了一些附加信息,例如客户端想要接收什么类型的数据,例如接受头。

响应头便于客户端提供信息,例如,客户端正在与哪种类型的服务器交互,如服务器头。

实体标题是指用于处理实体主体部分的标题。例如,实体标题可用于描述实体主体部分的数据类型,如内容类型标题。

HTTP通用标头

常规标头字段包括请求和响应消息支持的标头字段、缓存标头缓存控制和实用程序以及信息标头连接、日期、传输编码、更新和通过。

1、缓存控制

缓存控制指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置缓存控制不会修改另一个消息处理过程中的缓存过程。请求缓存指令包括无缓存、无存储、最长期限、最长过期、最小刷新、仅当缓存,响应消息包括公共、私有、无缓存、无存储、无转换、必须更新、代理更新、最大。每条消息中的说明具有以下含义:

No-cache:表示请求或响应消息无法缓存,但实际上可以存储在本地缓存中,但缓存无法在与原始服务器进行新鲜度验证之前将其提供给客户端。

无存储:缓存应该尽快从内存中删除文档的所有痕迹,因为它们可能包含敏感信息。

最长期限:缓存无法返回缓存时间超过最长期限指定秒数的文档。如果没有超过指定的秒,浏览器不会向服务器发送相应的请求,数据直接由缓存返回;在这段时间之后,服务器将决定是返回新数据还是仍然通过缓存提供数据。如果还发送了最大失效指令,使用寿命可能会超过其到期时间。

最小刷新:保持文档在未来至少保持指定秒的刷新,并接受其刷新寿命大于其当前年龄和最小刷新值之和的缓存对象。

Max-stall:指示客户端可以接收过期的响应消息。如果指定了max-stall消息的值,客户端可以在指定的值内接收过期的响应消息。

仅当缓存时:只有当缓存中有副本时,客户端才会获得副本。

Public:表示响应可以由任何缓存进行缓存,并且可以使用缓存的内容对任何用户进行响应。

Private:表示单个用户的全部或部分响应消息不能被共享缓存处理,只有缓存的内容可以用来响应之前请求内容的用户。

2、实用主义

Pragma头字段用于包含特定于实现的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它与Cache- Control:no-cache的含义相同。

3、连接

连接指示是否需要持久连接。如果Servlet看到这里的值是“Keep-Alive”,或者请求使用HTTP 1.1(默认情况下HTTP 1.1会进行持久连接),就可以利用持久连接,当页面包含多个元素(如Applet和图片)时,可以显著减少下载时间。为了实现这一点,Servlet需要在回复中发送一个Content-Length头。实现这一点最简单的方法是,先将内容写入ByteArrayOutputStream,然后在正式写出内容之前计算其大小。

关闭:完成此请求的响应后,告诉WEB服务器或代理服务器断开连接,不要等待此连接的后续请求。

Keepalive:告诉WEB服务器或代理服务器在完成此请求的响应后保持连接,并等待此连接的后续请求。

保持活动状态:如果浏览器请求保持连接,标头会指示您希望WEB服务器保持连接的时间长度(秒),例如保持活动状态:300。

4、日期

日期头字段指示消息的发送时间,应该包括在服务器响应中,因为在评估响应的新鲜度时使用缓存,并且时间的描述格式由RFC822定义。例如,日期:mon,31dec200104:25:57gmt。当日期描述的时间代表世界标准时,在转换当地时间时,需要知道用户的时区。

5、传输编码

WEB服务器指示它如何编码响应消息正文(而不是消息正文中的对象),例如它是否被分块,例如:Transfer-Encoding:分块

6、升级

它可以指定另一个可能完全不同的协议。例如,HTTP/1.1客户端可以向服务器发送一个HTTP/1.0请求,其中包含一个值为“HTTP/1.1”的Update头,这样客户端就可以测试服务器是否也使用了HTTP/1.1。

7、通过

列出客户端到OCS(反之亦然)的响应通过哪些代理服务器,以及它们用来发送请求的协议(和版本)。

当客户端的请求到达第一个代理服务器时,服务器会添加Via头并填写自己的相关信息。当下一个代理服务器收到第一个代理服务器的请求时,它会在自己的请求中复制上一个代理服务器请求的Via头,并在后面添加自己的相关信息,以此类推。当OCS收到最后一个代理服务器的请求时,它将检查Via头,以了解请求通过的路由。示例:via:1.0 236-81 . d 07071953 . Sina.com . cn :80(squid/2.6 . stab le 13)

HTTP请求头

请求头用于解释谁或什么在发送请求,请求来自哪里,或者客户端的偏好和能力。服务器可以尝试根据请求头中给出的客户端信息为客户端提供更好的响应。请求头字段可能包含以下字段:接受、接受字符集、接受编码、接受语言、授权、发件人、主机、如果修改自、如果匹配、如果不匹配、如果范围、如果范围、如果未修改自、最大转发、代理授权、范围、推荐人、用户代理。请求头字段的扩展需要双方的支持。如果存在不支持的请求头字段,通常会将其视为实体头字段。

8、接受

告诉网络服务器它接受什么媒体类型。*/*表示任何类型,类型/*表示该类型、类型/子类型下的所有子类型。

9、接受-字符集

浏览器告诉服务器它可以接收哪个字符集。

10、接受编码

浏览器声明它接收的编码方法,通常指定压缩方法,它是否支持压缩,以及它支持什么压缩方法(gzip,deflate)。

11、接受——语言

浏览器声明它接收的语言。语言和字符集的区别:汉语是一种语言,汉语中有很多字符集,比如big5、gb2312、gbk等等。

12、授权

当客户端从网络服务器接收到WWW-Authenticate响应时,它使用报头向网络服务器响应其身份验证信息。

13、如果匹配

如果对象的ETag没有改变,实际上意味着对象没有改变,然后执行请求的操作来获取文档。

14、如果不匹配

如果对象的ETag发生了变化,实际上意味着对象也发生了变化,然后执行请求的操作来获取文档。

15、如果-修改-自

如果所请求的对象在头部中指定的时间之后被修改,则所请求的动作(例如返回对象)将被执行,否则,将返回代码304来告诉浏览器该对象没有被修改。示例:if-modified-自:thu,10apr200809:14336042gmt

16、如果-未修改-自

如果请求的对象在头中指定的时间后没有被修改,将执行请求的操作(如返回对象)。

17、中频范围

浏览器告诉WEB服务器,如果我请求的对象没有改变,就把缺失的部分给我,如果对象改变了,就把整个对象给我。浏览器将被请求对象的ETag或者它知道的最后一次修改时间发送给WEB服务器,这样它就可以判断对象是否发生了变化。始终与范围头一起使用。

18、范围

浏览器(如Flashget多线程下载)告诉网络服务器它想要获取对象的哪一部分。示例:范围:字节=1173546

19、代理-验证

代理服务器响应浏览器,并要求它提供代理身份验证信息。

20、代理授权

浏览器响应代理服务器的身份验证请求,并提供自己的身份信息。

21、主机

客户端指定他们想要访问的网络服务器的域名/IP地址和端口号。比如主持人:rss.sina.com.cn

22、参考

浏览器向WEB服务器指示它从哪个网页获取URL,并单击当前请求中的网址/URL,例如:refer://www . jb51 . net。

23、用户代理

浏览器自己识别(是什么浏览器)。示例:用户代理:Mozilla/5.0(windows;u;Windows NT 5.1zh-CN;RV :1 . 8 . 1 . 14)Gecko/20080404 Firefox/2 . 0 . 0 . 14

HTTP响应头

响应头为客户端提供了一些额外的信息,比如谁在发送响应、响应者的功能,甚至是一些与响应相关的特殊指令。这些头有助于客户端处理响应并在将来做出更好的请求。响应头字段包含年龄、位置、代理身份验证、公共、重试后、服务器、变化、警告和万维网身份验证。响应头字段的扩展需要双方的支持。如果有不支持的响应头字段,通常会将其视为实体头字段。

24、年龄

当代理服务器用自己的缓存实体响应请求时,标头会指示自实体创建以来已经过去了多长时间。

25、服务器

网络服务器指示它是什么软件及其版本。示例:服务器:服务器:Apache/2.0.61 (Unix)

26、接受范围

网络服务器指示它是否接受获取其实体的一部分(如文件的一部分)的请求。字节:表示接受,无:表示拒绝。

变化

网络服务器使用头的内容来告诉缓存服务器在什么条件下可以使用这个响应返回的对象来响应后续的请求。如果源WEB服务器收到第一条请求消息,其响应消息的头标为:Content-encoding : gzip;Vary: Content-Encoding,那么Cache服务器会分析后续请求消息的头,检查其Accept-Encoding是否与前一次响应的Vary头值一致,即是否使用相同的内容编码方式,以防止Cache服务器用自己Cache中的压缩实体响应没有解压能力的浏览器。示例:vary: accept-encoding。

HTTP实体头

实体头提供了大量关于实体及其内容的信息,从关于对象类型的信息到可用于资源的各种有效请求方法。简而言之,实体头可以告诉接收者它正在处理什么。请求消息和响应消息都可以包含实体信息,实体信息通常由实体头字段和实体组成。实体标题字段包含有关实体的原始信息,实体标题包括信息性标题允许、位置、内容标题内容库、内容编码、内容语言、内容长度、内容位置、内容MD5、内容范围、内容类型、缓存标题Etag、过期、上次修改、扩展标题。

允许

服务器支持哪些请求方法(如GET、POST等)。).

29、位置

指示客户应该到哪里提取文档,该文档用于将接收者定位到资源的URL。位置通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法设置的,该方法同时将状态代码设置为302。

30、内容库

解析正文中的相对网址时使用的基本网址。

31、内容编码

WEB服务器指示它使用什么压缩方法(gzip,deflate)来压缩响应中的对象。示例:内容编码:gzip

32、内容-语言

WEB服务器告诉浏览器在理解主题时使用最合适的自然语言。

33、内容长度

网络服务器告诉浏览器它响应的对象的长度或大小,例如,内容长度: 26012

34、内容-位置

资源的实际位置。

35、内容-MD5

主体的MD5校验和。

36、内容-范围

实体头用于指定整个实体的一部分的插入位置,也表示整个实体的长度。服务器向客户返回部分响应,该响应必须描述响应的覆盖范围和整个实体的长度。一般格式:内容-范围:字节-单位pfirst-byte-pos-last-byte-pos/entity-legth。例如,传输的第一个500字节子字段的格式:Content-Range :字节0-499/1234如果http消息包含此部分(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传输的范围,Content-Length表示实际传输的字节数。

37、内容类型

网络服务器告诉浏览器它响应的对象的类型。示例:内容类型:应用程序/XML

38、Etag

它是一个对象(如网址)的标志值。就一个对象而言,比如一个html文件,如果它被修改了,它的Etag就不会被修改。因此,ETag的功能与Last-Modified类似,主要用于WEB服务器判断一个对象是否发生了变化。例如,当一个html文件被请求一次时,它的ETag被获得。当再次请求此文件时,浏览器会将之前获取的ETag值发送给WEB服务器,然后WEB服务器会将此ETag与文件的当前ETag进行比较,然后知道文件是否发生了变化。

39、到期

WEB服务器指示实体何时过期,过期的对象只有在与WEB服务器验证其有效性后才能用于响应客户的请求。是HTTP/1.0的头。示例:到期时间:2009年5月23日星期六10:02:12格林尼治标准时间

40、最后修改

WEB服务器考虑对象的最后修改时间,比如文件的最后修改时间,动态页面的最后生成时间等等。示例:上次修改时间:格林尼治时间2008年5月6日星期二02:42336043

版权声明:HTTP头信息摘要是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐