HTTP 使用指南 | 青训营笔记

61 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第4天

一、本堂课重点内容:

  1. HTTP协议简介
  2. HTTP协议的基本结构与发展历程
  3. 常见场景中的HTTP协议应用
  4. 在不同的环境中发起HTTP请求
  5. 知识扩展,了解更多网络通信协议

二、详细知识点介绍:

什么是HTTP

超文本传输协议

应用层协议,基于TCP

请求/响应

简单可扩展

无状态

报文

  1. method

    GET获取数据
    POST将实体提交到指定资源,导致服务器上的状态变化或副作用
    PUT用请求有效载荷替换目标资源的所有当前表示
    DELETE删除指定资源
    HEAD请求一个与GET请求的响应相同的响应,但没有响应体
    CONNECT建立一个到有目标资源标识的服务器的隧道
    OPPTIONS用于描述目标资源的通信选项
    TRACE沿着到目标资源的路径执行一个消息环回测试
    PATCH对资源应用部分修改
    • safe

      不会修改服务器数据的方法

      GET HEAD OPTIONS

    • idempotent(幂等)

      同样的请求执行一次与连续执行多次的效果一样,服务器的状态也是一样的,所有safe方法都是idempotent的

      GET HEAD OPTIONS PUT DELETE

  2. 状态码

    • 1xx:指示信息,表示请求已接收,继续处理

    • 2xx:成功,请求已被接收、理解、接受

      200 OK:客户端请求成功

    • 3xx:重定向,要完成请求必须进行更进一步的操作

      301:资源被永久转移到其他URL

      302:临时跳转

    • 4xx:客户端错误,有语法错误或无法完成

      401:unauthorized,请求未授权

      404:请求资源不存在

    • 5xx:服务器端错误,服务器未能实现合法请求

      500:服务器内部发生了不可预期的错误

      504:gateway timeout 网关或代理服务器无法在规定时间获得想要的响应

  3. RESTful API

    一种设计风格,representational state transfer

    • 每个URI代表一种资源
    • 客户端和服务器之间,传递这种资源的某种表现层
    • 客户端通过HTTP method对服务器端资源进行操作,实现表现层状态转化
  4. 常用请求头

    Accept:接收类型(对标服务器端返回的Content-Type)

    Content-Type:用户发送的实体内容的类型

    Cookie:有cookie并且同域访问时会自动带上

    User-Agent:用户客户端的必要信息,如安卓/ios/pc

  5. 常用响应头

    Set-Cookie:设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端

  6. 缓存

    • 强缓存:若有本地资源,直接使用

      • Expires:时间戳

      • Cache-Control:可缓存性

        no-cache:协商缓存验证

        no-store:不使用任何缓存

      • max-age:到期时间,单位为秒,存储的最大周期,相对于请求时间

      • must-revalidate:重新验证,一旦资源过期,在成功向原始服务器验证之前,不能使用

    • 协商缓存:向服务器验证本地资源能否使用

      • Etag/If-None-Match:资源的特定版本的标识符,类似指纹
      • Last-Modified/If-Modified-Since:最后修改时间

HTTP/2

更快、更稳定、更简单

  1. 帧:最小通信单位
  2. 消息:与逻辑请求或响应消息对应的完整的一系列帧
  3. 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
  4. 连接都是永久的,而且仅需要每个来源一个连接
  5. 流控制:阻止发送方向接收方发送大量数据

HTTPS

经过TSL/SSL加密

对称加密和非对称加密混用

三、实践练习例子:

  1. 应用场景分析 - 静态资源
  2. 应用场景分析 - 登录
  3. HTTP 协议实战 - 浏览器
  4. HTTP 协议实战 - Node篇

四、课后个人总结:

HTTP协议涉及的概念较多,需要仔细区分。对浏览器环境的应用实战比较陌生,还需要多多练习。