zoukankan      html  css  js  c++  java
  • HTTP首部

    HTTP报文首部、空行、报文主体

    HTTP的首部字段:

           首部字段值:字段值   比如Content-Type:text/html 表示主题的对象类型

           4种HTTP首部字段类型:

                  通用首部字段:请求报文和响应报文都会用

                  请求首部字段:Request 从客户端向服务端发送时用的首部

                  响应首部字段:Response 从服务器端向客户端返回响应报文

                  实体首部字段:请求和响应报文肢体部分都会用的首部

           非HTTP / 1.1首部字段,比如Cookie等统一归纳在RFC4229 HTTP Header Field Registration中

    End to end首部和Hop by hop首部

           端到端首部:会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,规定必须被转发

           逐跳首部:只对单次转发有效,会通过缓存或代理而不再转发

    HTTP/1.1 通用首部字段

           Cache-Control 能操作缓存的工作机制

           表示能否缓存的指令:

                  public指令  Cache-Control:public表示其他用户也可以利用缓存

                  private指令  响应只以特定的用户作为对象

                  no-cache指令 防止从缓存中返回过期的资源

                         如果是客户端发送的:表示不接受缓存过的响应

                         如果是服务器端返回的响应指令中包含no-cache指令,name缓存服务器不能对资源进行缓存

           控制可执行缓存的对象的指令

                  no-store指令

                         暗示请求或响应中包含机密信息

                         并不是不缓存,而是不缓存过期的资源

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

                  s-maxage指令

                         只适用于供多位用户使用的公共缓存服务器

                  max-age指令

                         缓存事件比指定时间数值小,就接收缓存,另外当max-age=0时,缓存服务器将请求转发给源服务器。

                         在HTTP/1.1中,优先级max-age>Expires,在HTTP/1.0中 max-age<Expires

                  min-fresh指令

                         在限定时间内有超过有效期限的资源无法作响应返回

                  max-stale指令

                         指定缓存资源,即使过期也照样接收

                  only-if-cached指令

                         指令要求缓存服务器不能重新加载响应,也不会再次确认资源有效性。若请求缓存服务器的本地缓存无响应,则返回状态码504

                  must-revalidate指令

                         会向服务器再次验证即将返回的响应缓存是否仍然有效,无法获取返回504,而且这个指令会忽略请求的max-stale指令

                  proxy-revalidate指令

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

                  no-transform指令

                         无论在请求还是响应中,缓存不能改变主体的媒体类型,可以防止代理压缩图片

                  Cache-Control扩展

                         通过cache-extension标记token,可以扩展Cache-Control首部字段内的指令

                         比如Cache-Control: private, community=“UCI”可以扩展

                  Connection首部字段

                         有两个作用:控制不再转发给代理的首部字段、管理持久连接

                         Connection:不再转发的首部字段名

                         管理持久连接:Connection: close  断开时使用close

                         HTTP/1.1默认是持久连接,HTTP:1.1之前是非持久连接。所以要想持续连接,需要指定Connection: Keep-Alive

                  Date

                         表明HTTP报文的创建时期和时间

                  Pragma

                         是HTTP/1.1之前的历史遗留字段,属于通用首部字段

                         Pragma: no-cache 要求所有中间服务器不返回缓存的资源

                         如果中间服务器是以HTTP/1.1为标准,则直接用Cache-Control: no-cache

                  Trailer

                         会事先说明在报文主体后记录了那些首部字段,可以应用在HTTP/1.1分块传输编码时

                  Transfer-Encoding

                         规定了传输报文主体时采用的编码方式

                         HTTP/1.1的传输编码仅对于分块传输编码有效

                  Upgrade

                         用于监测HTTP协议是否可以使用更高版本进行通信

                         Upgrade对象仅限于客户端和相邻服务器,所以想要使用首部字段Upgrade时,还需要额外指定的Connection: Upgrade

                  Via

                         首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径

                         Via不仅用于追踪报文的转发,还可以避免请求回环的发生,所以必须在经过代理时附加该首部字段的内容

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

                  Warning

                         从HTTP/1.0的响应首部演变过来的,通常会告知用户一些与缓存相关的问题的警告

                         格式: Warning: [警告码] [警告的主机:端口号] “[警告内容]” ([日期时间])

    请求首部字段

                  请求首部字段是从客户端向服务器端发送请求报文中所使用的字段,用来补充请求的附加信息、客户端信息。

           Accept

           Accept-Charset

                  可以通知服务器用户代理支持的字符集及字符集的相对优先顺序

           Accept-Encoding

                  告知服务器用户代理支持的内容编码及内容编码的优先级顺序,内容编码的例子gzip、compress、deflate、identity

           Accept-Language

                  告知服务器用户代理能够处理的自然语言集,可以按照权重q来表示相对优先级

           Authorization

                  告知服务器,用户代理的认证信息(证书值)

           Expect

                  告知服务器期望出现某种特定行为

           From

                  告知服务器使用用户代理的用户的电子邮件地址

           Host

                  虚拟主机运行在同一个IP上,因此使用首部字段HOST加以区分

           If-Match

                  形如If-XXX这样的请求都可以称为条件请求,只有判断指定条件为真时,才会执行请求。

                  只有当If-Match的字段值根ETag值匹配一致时,服务器才会接收请求

           If-Modified-Since

                  在这个字段指定的日期时间后,资源发生了更新,服务器就会接收请求。

            If-None-Match

                  与If-Match作用相反,当这个字段指定的字段值与请求资源的ETag不一致时,处理该请求

           If-Range

                  字段值若跟ETag值或更新的日期时间匹配一致,那么就作为范围请求处理。

                  不一致则忽略范围请求,返回全部资源。

                  如果不适用首部字段If-Range则需要进行二次处理

           If-Unmondified-Since

                  与If-Modified-Since作用相反,只有指定的请求资源在指定的日期时间后未发生更新的情况下才能处理请求。

           Max-Forwards

                  可以以十进制整数的形式指定可经过服务器的最大数目。

                  字段值为0时,服务器会立即返回响应。

           Proxy-Authorization

                  告知服务器认证所需要的信息

           Range

                  获取部分资源的范围请求,包含首部字段Range即可以告知服务器资源的指定范围

           Referer

                  可以查看URI是从那个web页面发起的

           TE

                  可以告知服务器客户端能够处理响应的传输编码方式及相对优先级

           User-Agent

                  会将创建请求的浏览器和用户代理名称等信息传达给服务器

    响应首部字段

           是由服务器端向客户端返回响应报文中所使用的字段

           Accept-Ranges

                  服务器告诉客户端能否处理范围请求

           Age

                  告知客户端源服务器在多久前创建了响应

           Etag

                  首部字段ETag告知客户端实体标识,服务器会为每份资源分配对应的ETag值。

                  资源更新时,ETag也会更新

                  比如访问中文和英文版的网页,URI相同,但是对应的资源不同

                  强ETag,不论实体发生多么细微的变化都会改变其值。

                  弱ETag,提示资源是否相同。

           Location

                  可以将响应接收方引导至某个与请求URI位置不同的资源。

                  几乎所有浏览器在接收到包含首部字段的Location后都会强制性的尝试对已提示的重定向资源的访问。

           Proxy-Authenticate

                  会把代理服务器要求的认证信息发给客户端

           Retry-After

                  告诉客户端多久之后再次发送请求

           Server

                  告诉客户端当前服务器上安装的HTTP服务器应用程序的信息。

           Vary

                  首部字段可对缓存进行控制,源服务器会向代理服务器传达关于本地缓存使用方法的命令。

           WWW-Authenticate

                  用于HTTP访问认证

    实体首部字段

           包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新事件等与实体相关的信息

           Allow

                  通知客户端能够支持Request-URI指定资源的所有HTTP方法

           Content-Encoding

                  告知客户端主体部分选用的内容编码方式

           Content-Language

                  告知客户端实体主体使用的自然语言

           Content-Length

                  表明了实体主体部分的大小

           Content-Location

                  表示报文主体返回资源对应的URI

           Content-MD5

                  客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5的字段值比较

                  要经过Base64编码处理,因为HTTP不能记录二进制值

           Content-Range

                  告诉客户端作为响应返回的实体那部分符合要求

           Content-Type

                  说明了实体主体内对象的媒体类型

           Expires

                  会将资源失效的日期告知客户端

           Last-Modified

                  指明资源最终的修改的时间

    为Cookie服务的首部字段

           Set-Cookie

                  属性:

                  expires:指定浏览器发送cookie的有效期

                  path: 指定Cookie的发送范围的文件目录

                  domain:指定的域名可做到与结尾匹配一致

                  secure:限制Web页面仅在HTTPS安全连接时,才可以发送Cookie,当省略这个属性时,无论HTTP还是HTTPS都会对Cookie进行回收

                  httpOnly: 使JS脚本无法获得Cookie,防止XSS对Cookie信息的窃取

           Cookie

                  会告知服务器,当客户端想要获得HTTP状态管理支持时,就会在请求在包含从服务器接收到的Cookie

    其他首部字段

           X-Frame-Options

                  响应首部,用于控制网站内容在其他Web网站的Frame标签内的显示问题,主要防止点击劫持攻击

           X-XSS-Protection

                  控制浏览器XSS防护机制的开关

           DNT

                  HTTP的请求首部,Do Not Track意思是拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法

           P3P

                  利用在线隐私偏好平台把个人隐私变成仅供程序可理解的形式,达到保护隐私的目的

  • 相关阅读:
    解析XML技术
    XML名命空间
    XML解析器
    java列表组件鼠标双击事件的实现
    XML(可拓展标记语言)基本概念
    数据包式套接字:基于UDP协议的Socket网络编程
    流式套接字:基于TCP协议的Socket网络编程(案例3)
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/oaoa/p/14855459.html
Copyright © 2011-2022 走看看