1、WEB协议与实践协议与实践HTTP/1.12014.12startend20 min124HTTPHTTP的发展史的发展史的发展史的发展史新旧方法、标头和响应码新旧方法、标头和响应码新旧方法、标头和响应码新旧方法、标头和响应码3高速缓存高速缓存高速缓存高速缓存Keep-Alive2精选课件pptHTTP协议发展史u HTTP/0.9:从1990年就已经用来作为WWW的传输协议,只支持GET方法。u HTTP/1.0:1996发布RFC1945,推出新标准HTTP/1.0。u HTTP/1.1:1997推出RFC2068,HTTP/1.1的标准。u HTTP/1.1:1999推出RFC2616,
2、废弃了RFC2068标准。3精选课件pptstartend20 min12新旧方法、标头和响应码新旧方法、标头和响应码新旧方法、标头和响应码新旧方法、标头和响应码HTTP的发展史4精选课件ppt方法请求命令请求命令功能功能GET最常用的请求方法,向最常用的请求方法,向Web服务器请求一个文件。服务器请求一个文件。POST向向Web服务器发送数据让服务器发送数据让Web服务器进行处理。可以用于提服务器进行处理。可以用于提交表单以及向新闻组、交表单以及向新闻组、BBS、邮件群组和数据库发送消息。、邮件群组和数据库发送消息。PUT向向Web服务器发送数据并存储在服务器发送数据并存储在Web服务器内部
3、。服务器内部。DELETE从从Web服务器上删除一个文件。服务器上删除一个文件。HEAD只请求页面的应答头部信息,不包括具体页面信息。常用来只请求页面的应答头部信息,不包括具体页面信息。常用来测试测试URL的合法性、可访问性及最近更新。的合法性、可访问性及最近更新。TRACE请求服务器将附加的文档无变更的返回,主要用于调试。请求服务器将附加的文档无变更的返回,主要用于调试。OPTIONS描述了在请求描述了在请求URL确定的请求确定的请求/应答过程中通信条件或设备应答过程中通信条件或设备是否可行的信息。是否可行的信息。CONNECT与与PROXY之间的连接管理之间的连接管理5精选课件ppt通用标
4、头通用头通用头含义含义Date 表示消息发送的时间表示消息发送的时间Pragma 用来包含实现特定的指令用来包含实现特定的指令Cache-Control指定请求和响应遵循的缓存机制指定请求和响应遵循的缓存机制connection用于表明是否保存用于表明是否保存socket连接为开放连接为开放via一个包含所有中间主机和协议的通用头标一个包含所有中间主机和协议的通用头标upgrade允许服务器指定一种新的协议或者新的协议版允许服务器指定一种新的协议或者新的协议版本,与响应编码本,与响应编码101(切换协议)配合使用。(切换协议)配合使用。例如:例如:Upgrade:HTTP/2.0Transfe
5、r-Encoding 标明对应被接受方反向的消息体实施变换的类型标明对应被接受方反向的消息体实施变换的类型Trailer消息尾部的标头消息尾部的标头Warning错误通知错误通知6精选课件ppt请求标头请求头请求头含义含义Accept客户端可以处理的媒体类型客户端可以处理的媒体类型Accept-Charset客户端可以处理的字符集客户端可以处理的字符集Accept-Encoding客户端可以理解的编码机制客户端可以理解的编码机制Accept-Language客户端乐于接受的自然语言列表客户端乐于接受的自然语言列表Authorization定义访问一种资源所必需的授权(域和被编码的用户定义访问一
6、种资源所必需的授权(域和被编码的用户ID与口令)。与口令)。From包括控制请求用户代理的人的互联网包括控制请求用户代理的人的互联网E-MAIL地址地址Host说明了正在请求的资源的互联网主机和端口号说明了正在请求的资源的互联网主机和端口号HTTP/1.1请求必须包含主机头域,否则系统会以请求必须包含主机头域,否则系统会以400状态码返回状态码返回If-Modified-Since如果请求的变量自从这个域说明的时间以来没有被修如果请求的变量自从这个域说明的时间以来没有被修改过,实体将不会从服务器返回;相反的,将返回改过,实体将不会从服务器返回;相反的,将返回304响应(没有修改的)而没有任何报
7、文实体。响应(没有修改的)而没有任何报文实体。7精选课件ppt请求标头请求头请求头含义含义If-Match用于校验报头域的实体标签用于校验报头域的实体标签If-Range指定资源的一个实体标记,与指定资源的一个实体标记,与Range头标一同使用。头标一同使用。如果此实体未修改,那么服务器只发送指定的范围,否则如果此实体未修改,那么服务器只发送指定的范围,否则它将发送整个资源。它将发送整个资源。Max-Forwards一个用于一个用于TRACE方法的请求头标,以指定代理或网关的最方法的请求头标,以指定代理或网关的最大数目大数目range指定一种度量单位和一个部分被请求资源的偏移范围指定一种度量单
8、位和一个部分被请求资源的偏移范围Proxy-Authenticate有意请求只来自请求链(代理)的下一个服务器的认证有意请求只来自请求链(代理)的下一个服务器的认证Referer允许客户确定获得请求允许客户确定获得请求URL的资源地址的资源地址,允许服务器生成关允许服务器生成关于到资源的反向连接于到资源的反向连接(back-link)的列表的列表User-Agent有关用户代理软件的信息有关用户代理软件的信息8精选课件ppt响应标头响应头响应头含义含义Location对于一个已经移动的资源,用于重定向请求者至另一个位置。对于一个已经移动的资源,用于重定向请求者至另一个位置。与状态编码与状态编码
9、302(暂时移动)或者(暂时移动)或者301(永久性移动)配合(永久性移动)配合使用。使用。Server一种标明一种标明Web服务器软件及其版本号的头标服务器软件及其版本号的头标www-Authenticate一个提示用户代理提供用户名和口令的响应头标,与状态编一个提示用户代理提供用户名和口令的响应头标,与状态编码码401(未授权)配合使用。(未授权)配合使用。Retry-After由服务器与状态编码由服务器与状态编码503(无法提供服务)配合发送,以标(无法提供服务)配合发送,以标明再次请求之前应该等待多长时间明再次请求之前应该等待多长时间Accpet-range允许服务器指明:将在给定的偏
10、移和长度处,为资源组成部允许服务器指明:将在给定的偏移和长度处,为资源组成部分的接受请求。分的接受请求。Age允许服务器规定自服务器生成该响应以来所经过的时间长度,允许服务器规定自服务器生成该响应以来所经过的时间长度,以秒为单位。以秒为单位。Vary选择资源变体选择资源变体9精选课件ppt实体标头实体头实体头含义含义Allow定义一个由位于请求定义一个由位于请求URI中的资源所支持的中的资源所支持的HTTP方法列表。方法列表。Content-Encoding一种介质类型修饰符,标明一个实体是如何编码的一种介质类型修饰符,标明一个实体是如何编码的Content-Length指定包含于请求或响应中
11、数据的字节长度。指定包含于请求或响应中数据的字节长度。Content-Type标明发送或者接收的实体的标明发送或者接收的实体的MIME类型。类型。Expires指定实体的有效期指定实体的有效期Last-Modified指定被请求资源上次被修改的日期和时间指定被请求资源上次被修改的日期和时间Content-MD5实体的一种实体的一种MD5摘要,用作校验和。发送方和接受方都计摘要,用作校验和。发送方和接受方都计算算MD5摘要,接受方将其计算的值与此头标中传递的值进摘要,接受方将其计算的值与此头标中传递的值进行比较。行比较。Content-Range随部分实体一同发送;标明被插入字节的低位与高位字节
12、随部分实体一同发送;标明被插入字节的低位与高位字节偏移,也标明此实体的总长度。偏移,也标明此实体的总长度。10精选课件ppt实体标头实体头实体头含义含义Content-Location指定包含于请求或响应中的资源定位(指定包含于请求或响应中的资源定位(URI)。)。Content-Language实体的自然语言。实体的自然语言。ETag一种实体头标,它向被发送的资源分派一个唯一的标识符一种实体头标,它向被发送的资源分派一个唯一的标识符Extension-header允许客户端定义新的实体头,但是这些域可能无法未接受允许客户端定义新的实体头,但是这些域可能无法未接受方识别。方识别。11精选课件p
13、ptHTTP状态码状态码状态码含义含义100初始的请求已经接受,客户应当继续发送请求的其余部分初始的请求已经接受,客户应当继续发送请求的其余部分101服务器将遵从客户的请求转换到另外一种服务器将遵从客户的请求转换到另外一种HTTP协议版本协议版本200成功成功201服务器已经创建了新文件,服务器已经创建了新文件,Location头给出了它的头给出了它的URL202已经接受请求,但处理尚未完成已经接受请求,但处理尚未完成203文件已经正常地返回,但一些应答头可能不正确,因为使用的是文文件已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝档的拷贝204没有新文件,浏览器应该继续显示原来
14、的文档。没有新文件,浏览器应该继续显示原来的文档。205没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容器清除表单输入内容206客户发送了一个带有客户发送了一个带有Range头的头的GET请求,服务器完成请求请求,服务器完成请求12精选课件ppt300客户请求的文件可以在多个位置找到,这些位置已经在返回的文件内列出客户请求的文件可以在多个位置找到,这些位置已经在返回的文件内列出301客户请求的文件在其他地方,新的客户请求的文件在其他地方,新的URL在在Location头中给出,浏览器应该头中给出,浏览器应该自
15、动地访问新的自动地访问新的URL302类似于类似于301,但新的,但新的URL应该被视为临时性的替代,而不是永久性的应该被视为临时性的替代,而不是永久性的303类似于类似于301/302,不同之处在于,如果原来的请求是,不同之处在于,如果原来的请求是POST,Location头指头指定的重定向目标文件应该通过定的重定向目标文件应该通过GET提取提取304客户端有缓存的文件并发出了一个条件性的请求(一般是提供客户端有缓存的文件并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文件)。服务器告诉客户,原来缓头表示客户只想比指定日期更新的文件)。服务
16、器告诉客户,原来缓存的文件还可以继续使用。存的文件还可以继续使用。305客户请求的文件应该通过客户请求的文件应该通过Location头所指明的代理服务器提取头所指明的代理服务器提取400请求出现语法错误请求出现语法错误401访问被拒绝,客户试图未经授权访问受密码保护的页面。应答中会包含一访问被拒绝,客户试图未经授权访问受密码保护的页面。应答中会包含一个个WWW-Authenticate头,浏览器据此显示用户名字头,浏览器据此显示用户名字/密码对话框,然后再密码对话框,然后再填写合适的填写合适的Authorization头后再次发出请求。头后再次发出请求。403资源不可用。服务器理解客户的请求,
17、但拒绝处理它。通常由于服务器上资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致文件或目录的权限设置导致HTTP状态码13精选课件ppt404无法找到指定位置的资源无法找到指定位置的资源405请求方法(请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)等)对指定的资源不适用,用来访问本页面的对指定的资源不适用,用来访问本页面的HTTP方法不被允许方法不被允许406指定的资源已经找到,但它的指定的资源已经找到,但它的MIME类型和客户在类型和客户在Accpet头中所指头中所指定的不兼容,客户端浏览器不接受所请求页面的定的不兼容,客户端
18、浏览器不接受所请求页面的MIME类型类型407要求进行代理身份验证,类似于要求进行代理身份验证,类似于401,表示客户必须先经过代理服,表示客户必须先经过代理服务器的授权务器的授权408在服务器许可的等待时间内,客户一直没有发出任何请求在服务器许可的等待时间内,客户一直没有发出任何请求409通常和通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功求不能成功410所请求的文件已经不再可用,而且服务器不知道应该重定向到哪一所请求的文件已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和个地址。它和404的不同在于,返回的不同
19、在于,返回407表示文件永久地离开了指表示文件永久地离开了指定的位置,而定的位置,而404表示由于未知的原因文件不可用。表示由于未知的原因文件不可用。411服务器不能处理请求,除非客户发送一个服务器不能处理请求,除非客户发送一个Content-Length头头HTTP状态码14精选课件ppt412请求头中指定的一些前提条件失败请求头中指定的一些前提条件失败413目标文件的大小超过服务器当前愿意处理的大小目标文件的大小超过服务器当前愿意处理的大小414请求的资源请求的资源URL长于服务器允许的长度长于服务器允许的长度415请求资源不支持请求文件格式请求资源不支持请求文件格式416服务器不能满足客
20、户在请求中指定的服务器不能满足客户在请求中指定的Range头头417执行失败执行失败500服务器遇到了意料不到的情况,不能完成客户的请求服务器遇到了意料不到的情况,不能完成客户的请求501服务器不支持实现请求所需要的功能。例如,客户发出了一个服务服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的器不支持的PUT请求。请求。502服务器作为网关或者代理时,为了完成请求访问下一个服务器,但服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答该服务器返回了非法的应答503服务不可用,服务器由于维护或者负载过重未能应答服务不可用,服务器由于维护或者负载过
21、重未能应答504网关超时,表示不能及时地从远程服务器获得应答网关超时,表示不能及时地从远程服务器获得应答505服务器不支持请求中所指明的服务器不支持请求中所指明的HTTP版本版本HTTP状态码15精选课件pptstartend20 min123新旧方法、标头和响应码HTTP的发展史高速缓存高速缓存高速缓存高速缓存16精选课件ppt与缓存相关的HTTP头Last-Modified、Etag:用来验证网页的有效性。:用来验证网页的有效性。Expires、Cache-control:用来控制缓存的失效日期。:用来控制缓存的失效日期。Age、Vary等其中其中1,优先级别:,优先级别:EtagLast
22、-ModifiedCache-controlExpires2,Cache-control:public此指令优先于高速缓存采用的任何默认策略此指令优先于高速缓存采用的任何默认策略3,对于一般的纯静态页面(,对于一般的纯静态页面(html、gif、jpg、css、js)会有)会有Last-Modified信息,信息,而不会在响应头添加而不会在响应头添加Expires字段。字段。17精选课件ppt与缓存相关的HTTP头协议头名称协议头名称说明说明Cache-control在在http/1.1中新增的标头,指定请求和响应遵循的缓存机中新增的标头,指定请求和响应遵循的缓存机制,对高速缓存进行控制。对于
23、我们制,对高速缓存进行控制。对于我们cdn节点来说,这个节点来说,这个是最重要的标头,我们节点的默认高速缓存策略都必须服是最重要的标头,我们节点的默认高速缓存策略都必须服从它。从它。Cache-control标头分为高速缓存控制请求指令和标头分为高速缓存控制请求指令和高速缓存控制响应指令。高速缓存控制响应指令。Expires源服务器利用这个标头,指出在这个标头的时间之后,资源服务器利用这个标头,指出在这个标头的时间之后,资源就应当过期并且失效。在源就应当过期并且失效。在Expires标头所指定的日期之标头所指定的日期之后,就不能再高速缓存响应。后,就不能再高速缓存响应。Age服服务务器器用用A
24、ge标标头头指指出出响响应应是是多多久久以以前前在在原原始始服服务务器器生生成成的的。对对于于我我们们的的cdn节节点点来来说说,这这个个值值就就是是我我们们节节点点上上缓缓存存的的资资源源被被验验证证开开始始,一一直直到到现现在在所所经经历历的的时时间间。我我们们的的节节点点在在响响应应最最终终用用户户的的时时候候,必必须须生生成成Age头头。(最最终终用用户户浏浏览览器器缓缓存存时时间间=cache-control中中指指定定的的过过期期时时间间-age。)。)18精选课件ppt与缓存相关的HTTP头协议头名称协议头名称说明说明Last-Modified文档的最后改动时间。客户可以通过文档
25、的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回只有改动时间迟于指定时间的文档才会返回,否则返回一个一个304(NotModified)状态。)状态。Last-Modified也可用也可用setDateHeader方法来设置。方法来设置。Etag又称为实体标签,它和又称为实体标签,它和Last-Modified配合使用,通过让配合使用,通过让客户端浏览器缓存部分数据,从而达到减少服务器压力客户端浏览器缓存部分数据,从而达到减少服务器压力的另外
26、一种途径。的另外一种途径。ETag标头是特定资源版本的唯一标识标头是特定资源版本的唯一标识符。它由客户端用来验证客户端缓存的内容,以避免再符。它由客户端用来验证客户端缓存的内容,以避免再次请求该内容。次请求该内容。Vary服务器使用响应的标头字段服务器使用响应的标头字段“Vary”来表明响应实体是服来表明响应实体是服务器端根据具体的请求而从不同版本的有效响应缓存中务器端根据具体的请求而从不同版本的有效响应缓存中选择出的最合适的响应。选择出的最合适的响应。“Vary”标头中列出的字段名标头中列出的字段名称称取自请求标头集合。取自请求标头集合。19精选课件pptCache-control请求指令指
27、令指令简介简介No-cache强制向源服务器进行验证强制向源服务器进行验证Only-if-cached只从高速缓存(只从高速缓存(cdn节点)获取资源节点)获取资源No-store不允许高速缓存保存请求、响应不允许高速缓存保存请求、响应Max-age响应的存活期限不能大于此值响应的存活期限不能大于此值Max-stale允许过期的响应,但是过期时间不可长于这里指定的值允许过期的响应,但是过期时间不可长于这里指定的值Min-fresh至少在这里指定的值的期限内,响应应保持最新状态至少在这里指定的值的期限内,响应应保持最新状态No-transform代理不能更改媒体类型代理不能更改媒体类型扩展权标扩
28、展权标代表新的请求指令的新权标代表新的请求指令的新权标20精选课件pptCache-control响应指令指令指令简介简介Public允许在任何地方高速缓存响应允许在任何地方高速缓存响应Private对于特定的用户不响应对于特定的用户不响应No-store不允许高速缓存保存响应、请求不允许高速缓存保存响应、请求No-cache在事先没有重新验证的情况下,不得使用高速缓存的内容在事先没有重新验证的情况下,不得使用高速缓存的内容No-transform代理不得更改媒体类型代理不得更改媒体类型Must-revalidate可以高速缓存,但是必须进行重验证,查看是否过期可以高速缓存,但是必须进行重验证
29、,查看是否过期Max-age响应的存活期限不能大于此值响应的存活期限不能大于此值扩展权标扩展权标代表新的响应指令的新权标代表新的响应指令的新权标21精选课件ppt缓存建议内容不能缓存的,建议使用内容不能缓存的,建议使用cache-controlcache-control:no-storeno-store指指令。令。只是某个内容中的某个字段值不能缓存的话,建议使用只是某个内容中的某个字段值不能缓存的话,建议使用cache-control:private=“cache-control:private=“字段名字段名”指令。指令。内容能缓存,但是一定要保证每次响应都是最新的,建内容能缓存,但是一定要
30、保证每次响应都是最新的,建议使用:议使用:cache-control:no-cache cache-control:no-cache指令。指令。内容能缓存一段时间,源服务器使用内容能缓存一段时间,源服务器使用http1.1http1.1协议,那么协议,那么建议使用建议使用cache-controlcache-control:max-age+etag+varymax-age+etag+vary标头。标头。22精选课件pptstartend20 min1243HTTP的发展史新旧方法、标头和响应码高速缓存Keep-Alive23精选课件ppthttp 1.0 的Keep-AliveKeep-Ali
31、veKeep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,继请求时,Keep-AliveKeep-Alive功能避免了建立或者重新建立连接。功能避免了建立或者重新建立连接。具体实现如下具体实现如下Connection:keep-aliveConnection:Keep-alive客户端客户端服务器服务器1.客户端先发送一个带有connection标头请求实现持久连接2.服务器也会发出一个带有connection标头的信息来决定是否要保持次就连接24精选课件ppt持久连接具有以下优势持久连接具有以下优势 减少TCP连接,节省了路由和主机的CPU耗时。HTTP的术管道技允许客户端发送多个请求而不用等待响应。减少TCP打开导致的包的消息来减少网络拥塞。错误可以被报告而不用直接关闭TCP连接。http 1.1 的Keep-Alive25精选课件ppt