第一章 了解 Web 及网络基础

第二章 简单的 HTTP 协议

  • HTTP/1.1 所有连接默认为持久连接,但 HTTP/1.0 未标准化
  • 管线化技术出现后,不需要等待响应即可直接发送下一个请求
  • Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。服务器发送的响应报文中含有 Set-Cookie 的首部字段时,客户端保存 Cookie。此后客户端在请求报文中会自动加上 Cookie 值

第三章 HTTP 报文内的 HTTP 信息

  • 编码提升传输速率,常用的内容编码有以下几种:gzip(GNU zip)、compress(UNIX 系统的标准压缩)、deflate(zlib)、identify(不进行编码)

  • 分割发送的分块传输编码(Chunked Transfer Coding),其将实体主体分成多个部分,每一部分均通过十六进制来标记块的大小,最后一块使用『0(CR+LF)』来标记。

  • MIME(多用途因特网邮件扩展)机制,允许邮件处理文本、图片、视频等多个不同类型的数据。MIME 扩展中使用一种称为多部分对象集合(Multipart)的方法,用来容纳多份不同类型的数据。

  • mulitpart 包含的对象如下:

    • multipart/form-data:在 Web 表单文件上传时使用
      Content-Type: multipart/form-data; boundary=AaB03x
      
      --AaB03x
      Content-Disposition: form-data; name="field1"
      
      Joe Blow
      --AaB03x
      Content-Disposition: form-data; name="pics"; filename="file1.txt"
      Content-Type: text/plain
      
      ...(file1.txt的数据)...
      --AaB03x--
    
    • multipart/byteranges:状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用
      HTTP/1.1 206 Partial Content
      Date: Fri, 13 Jul 2012 02:45:26v GMT
      Last-Modified: Fri, 31 Aug 2007 02:02:20 GMT
      Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
      
      --THIS_STRING_SEPARATES
      Content-Type: application/pdf
      Content-Range: bytes 500-999/8000
      
      ...(范围指定的数据)...
      
      --THIS_STRING_SEPARATES
      Content-Type: application/pdf
      Content-Range: bytes 7000-7999/8000
      
      ...(范围指定的数据)...
      --THIS_STRING_SEPARATES--   
    

    说明:

    • 使用 boundary 字符串来划分 multipart 指明的各类实体,在其指定的各个实体的起始行之前插入『—』标记(如 --AaB03x),在对应的字符串的最后插入『--』标记作为结束(如 --AaB03x—)。
  • 范围请求(Range Request):指定范围发送的请求。执行范围请求时,用到首部字段 Range 来指定资源的 byte 范围:

    • 5001~10000 字节
      Range: bytes=5001-10000
    
    • 从 5001 字节之后全部的
      Range: bytes=5001-
    
    • 从一开始到 3000 字节和 5000~7000 字节的多重范围
      Range: bytes=-3000, 5000-7000
    
    • 说明:针对范围请求,响应返回 206 Partial Content 的响应报文。对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后 返回响应报文。如果服务器无法响应范围请求,则会返回 200 OK。
  • 内容协商(Content Negotiation):客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最合适的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准,包含在请求报文中的某些首部字段用于标识这些判断标准:

    • Accept
    • Accept-Charset
    • Accept-Encoding
    • Accept-Language
    • Content-Language
  • 内容协商技术的 3 种类型:

    • 服务器驱动协商
    • 客户端驱动协商
    • 透明协商
支付宝扫码打赏 微信打赏

坚持原创技术分享,您的支持将鼓励我继续创作!

扫描二维码,分享此文章

逆葵's Picture
逆葵

花名逆葵,刚刚毕业的北邮 CS 土著一枚。现在淘宝 FED 搬砖。《Vue.js 权威指南》作者之一。学习、思考、沉淀中,向成为顶级 JavaScript 技术栈开发者努力。