Javascript——传输协议

  • 了解HTTP协议
    • http 传输协议是前后端交互的一种方式,表示前端以怎样的形式发送数据给后端,后端以怎样的形式返回数据给前端
    • 传输协议中必须经历 建立连接 --> 前端发送请求给后端 --> 后端返回响应给前端 --> 断开连接
    • 只能由前端主动发起,后端不能主动沟通前端
    • 一次连接只能沟通一件事,所以对一件事尽可能详细描述
    • 前后端进行交互时只能使用字符串格式,不能使用其他格式的数据类型,中文会自动转换为 url 编码
  • 传输协议传输过程
    • 建立连接(基于TCP/IP协议的三次握手)
      建立连接的目的是保证浏览器与服务器之间进行通道的连接
      过程: 前端询问后端状态,后端回应前端,前端回应后端的回应,前端与后端确认正常连接,前端发送请求给后端

    • 前端发送请求(以请求报文形式进行发送)
      请求报文是一个特殊格式的字符串文件(由浏览器进行组装)
      请求行的参数说明:
      1. 请求方式
        HTTP 1.0 的请求方式:
        1. GET 偏向于获取的方式(大部分都是给后端一些参数,用来获取一系列数据)
        2. POST 偏向于给服务器一些数据(大部分都是登录,给服务器一些信息,然后返回一个简单的结果)
        3. PUT 偏向于给服务器一些信息,添加数据(大部分用于注册,给服务器发送一些信息进行存储)
        4. HEAD 用于获取服务器头信息
        HTTP 1.1 的请求方式:
        1. DELDTE 偏向于删除信息(大部分时删除评论等)
        2. CONNECT 管道连接改变代理连接使用
        3. PATCH 偏向于给服务器一些信息进行修改信息(大部分用于完善用户资料)
        4. OPTIONS 获取服务器性能,但是需要服务器同意
      2. ./login.php 表示请求地址
      3. HTTP/1.1 表示传输协议版本
      请求头(对本次请求的描述信息)
      1. Host 表示请求的主机
      2. Accapt 表示需要的数据类型
      3. User Agent 表示请求的终端
      4. Cookie
      5. Content-type 表示请求体的数据格式
      请求空行(分隔请求体和请求头)
      请求体(前端携带给后端的参数;GET请求没有)

    • 后端接收请求并返回响应(以响应报文形式发送)
    • 状态行:
      1. 响应状态码
      • 100 ~ 199 表示连接继续
        101 状态码表示连接继续
      • 200 ~ 299 表示各种意义上的成功
        200 状态码表示通用成功
      • 300 ~ 399 表示重定向
        301 状态码表示永久重定向(本次请求永久访问这个地址,重新切换为新的地址)
        302 状态码表示临时重定向(本次请求临时使用 服务器 来决定浏览器跳转页面)
      • 400 ~ 499 表示客户端错误
        403 状态码表示访问权限不够
        404 状态码表示访问地址不存在
      • 500 ~ 599 表示服务端错误
        500 状态码表示通用服务端错误
        501 状态码表示服务器维护或过载
      1. 对响应状态码的简单描述
      2. 传输协议的版本
    • 响应行:
      1. 对本次响应的描述信息
      2. Date 表示服务器时间(世界标准时间)
      3. Server 表示服务器信息
      4. Content-Type 表示响应体的数据格式
      5. ···
    • 响应体(后端给前端的数据)
    • 断开连接(基于TCP/IP 协议的四次挥手)
      保证浏览器与服务器之间通道的断开
      过程:前端收到响应报文,向后端发送断开报文,后端接收到断开报文并发送断开报文,前端接收到后端的断开报文并发送断开信息,后端无回应,断开来连接
  • GET 和 POST 请求方式的区别
    • GET 语义上是获取信息,GET携带参数的方式时 queryString,信息在地址栏后面直接拼接,不在请求体中,GET 理论上携带数据无限,但是浏览器地址栏有限,IE为2KB,GET 会被浏览器主动缓存,GET 明文发送
    • POST 语义上是提交信息,POST 携带参数是 requestBody,信息在地址栏没有,而是在请求体中,POST 理论上携带数据无限,但是会被服务器端限制,POST 请求不会被浏览器主动缓存,POST 暗文发送,POST的数据格式需要与请求头内的 content-type 内的格式相匹配
  • 了解Cookie(客户端的本地存储空间,用于存储一些数据)
    特点:
    1. Cookie 按照域名进行存储(只能访问当前域名)
    2. Cookie 按照文件路径存储(子级可以访问父级路径内容,父级不能访问子级内容)
    3. Cookie 储存时按照字符串的形式进行存储('key=value')
    4. Cookie 的存储空间为 4KB 或 50条数据
    5. Cookie 时效性,默认为会话级别失效,关闭浏览器后就没有了,可进行手动进行设置
    6. Cookie 前后端均可操作
    7. 请求时自动携带数据
  • 操作cookie语法
    【Javascript——传输协议】使用JS进行操作
    // 获取数据 let cook = document.cookie // 设置或修改数据 document.cookie = 'key = value; expires=' + new Date() + '; path=/' /* key = value 设置值 expires=' + new Date() + ' 对Cookie设置时效性性 path=/ 设置存储路径 存储的数据会自动转换为字符串格式,一般只存储一些简单的数据 */ // 删除一条数据 document.cookie = 'key = value; expires=-1'

    使用PHP进行操作
    // 获取数据(PHP自带一个关联型数组) $cook = $_COOKIE; $cook = $_COOKIE['key']; //访问一个指定数据// 设置或修改 setcookie(key,value,expires,path);

  • 了解session(服务器端的一个存储空间)
    特点:开启session时,会自动生成一个“密码”,这个“密码”一半会自动存储到 cookie中,当数据返回给前端时会自动把这个“密码”带回去,并且cookie中存在一个 session_id
  • 设置session的语法
    // 设置session对应的cookie的时效性 session_set_cookie_params(时效时长,session_name(),session_id()); // 参数一:单位为秒,设置多长时间过期 // 参数二:设置 session 的key // 参数三 session 的value // 设置时效性的方法必须写在 session_start() 之前// 开启session空间 session_start(); // 设置session $_SESSION['key']= value;

    推荐阅读