首页 > 其他分享 >前端必备基础【网络通信】(2024最新版)

前端必备基础【网络通信】(2024最新版)

时间:2024-07-29 17:26:16浏览次数:17  
标签:网络通信 断开连接 请求 2024 xhr 最新版 连接 服务端 客户端

Ajax

Asynchronous Javascript and XML 的缩写,是使用 JS 发起网络通信的技术统称,具体步骤为:

  1. 创建 XMLHttpRequest 实例
  2. 发出 HTTP 请求
  3. 接收服务器传回的数据
  4. 更新网页数据(通常是部分内容,而不是整个网页)

XMLHttpRequest

XMLHttpRequest 是 js 的内置对象,用于发起网络请求

get 请求

var xhr = new XMLHttpRequest();
xhr.open("GET", "your_url?param1=value1&param2=value2", true);
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var response = xhr.responseText;
    console.log(response);
  }
};
xhr.send();

post 请求

var xhr = new XMLHttpRequest();
xhr.open("POST", "your_url", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var response = xhr.responseText;
    console.log(response);
  }
};
xhr.send("param1=value1&param2=value2");

Fetch

fetch 是全局变量 window 的一个方法(API),返回一个promise对象,也用于发起网络请求,因比 XMLHttpRequest 更简洁易用,已取代 XMLHttpRequest

get 请求

fetch(url).then(response=>{
   console.log('响应',response)
})

post 请求

fetch(url,{
 method:'POST',
 headers:{
  'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'
 },
 body:`user=${user.value}&pas=${pas.value}`
 }).then(response=>{
  console.log('响应',response)
})

Axios

Axios 是一个基于promise 的网络请求库,底层使用 XMLHttpRequest 实现,官网为 https://www.axios-http.cn/docs/intro

vue 中使用详见教程
https://blog.csdn.net/weixin_41192489/article/details/113878619

网络通信过程

  • TCP 是传输层的协议,是有状态的长连接(相当于在客户端和服务端之间牵了一根网线)
  • HTTP 是应用层的协议,是无状态的短连接,基于 TCP 连接来传输数据(利用TCP牵好的网线传输数据)

从本质上来说,二者没有可比性

1. TCP 三次握手建立连接

在这里插入图片描述

第一次握手
客户端向服务端发送连接请求(客户端:可以连接吗?)

第二次握手
服务端向客户端发送同意连接的应答(服务端:可以,你能收到我的回复吗?)

第三次握手
客户端向服务端发送连接确认(客户端:可以,那我开始连接啦!)

  • 客户端 " 插网线 "
  • 客户端发送连接确认
  • 服务端收到确认
  • 服务端 " 插网线 "

2. HTTP 传输数据

客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

为了节省资源和时间,请求头的 Connection 属性的默认值为 keep-alive ,即默认开启长连接:一次 TCP 连接可以发送多个 HTTP 请求

若将请求头的 Connection 属性值改为 close,则不再开启长连接:一次 TCP 连接只能进行一次 HTTP 请求

3. TCP 四次挥手断开连接

在这里插入图片描述
第一次挥手
客户端向服务端发送断开连接请求(客户端:我的 http 请求已发送完,可以断开连接了!)

第二次挥手
服务端向客户端发送等待传输的应答,此时服务端已停止接收客户端的 http 请求(只出不进),并继续向客户端传输未传输完的数据(服务端:好的,等我把数据传输完毕就断开连接)

第三次挥手
等所有数据传输完成后,服务端向客户端发送断开连接的通知(服务端:可以断开连接啦!)

第四次挥手
客户端向服务端发送断开连接应答(客户端:好的,我断开了!)

  • 客户端 " 拔网线 "
  • 客户端发送断开连接应答
  • 服务端收到应答
  • 服务端 " 拔网线 "

标签:网络通信,断开连接,请求,2024,xhr,最新版,连接,服务端,客户端
From: https://blog.csdn.net/weixin_41192489/article/details/140765745

相关文章

  • 数字政府一体化建设白皮书(2024)学习笔记
    1.核心文件《数字中国建设整体布局规划》指出,建设数字中国是数字时代推进中国式现代化的重要引擎,是构筑国家竞争新优势的有力支撑。《关于加强数字政府建设的指导意见》指出要”强化系统观念,加强系统集成,全面提升数字政府集约化建设水平,统筹推进技术融合,业务融合、数据融合“。......
  • 云原生周刊:Cilium v1.16.0 发布|20240729
    开源项目CyclopsCyclops是一个开源的开发工具,通过易于使用的用户界面简化了Kubernetes,使其更易上手。不再需要使用YAML创建和配置Kubernetes清单,可以使用Cyclops轻松配置和部署应用程序,还包括验证功能!KubetailKubetail是一个用于Kubernetes集群的私有实时日志查看......
  • 2024.7.25 模拟赛总结
    T1icanStatement:给定一个有\(n(1\len\le10^7)\)个元素的序列\(a(a_i\le10^9)\),求满足\(i<j\)且\(a_i<a_j\)的点对\((i,j)\)中\(j-i\)的最大值。Solution:考虑什么样的\(a_i\)可能作为点对中较靠左边的元素出现。显然对于一个\(k>i\)且\(a_k......
  • 软件著作权申请教程(超详细)(2024新版)软著申请
      目录一、注册账号与实名登记二、材料准备三、申请步骤1.办理身份2.软件申请信息3.软件开发信息4.软件功能与特点5.填报完成一、注册账号与实名登记    首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份。中国版权保护中心......
  • 福昕高级PDF编辑器专业版 v2024 授权版
    福昕高级PDF编辑器是一款功能强大的PDF文件编辑软件,提供多种实用的编辑功能。软件截图:使用说明:解压后,双击start.bat来运行软件。下载地址:FoxitPDFEditor-Pro-2024解压密码:helloh下载时可能会有广告,忽略,等下载结束即可。部分杀软会因该版本软件未购买签名证书(如下图)而......
  • 2024互联网大厂薪资职级对照,拼多多初级工程师年薪78.2万!
    2024年互联网大厂最新薪资职级对照来啦!拼多多初级工程师的年薪中位数就高达78.2万!是大厂初级工程师年薪之最!996也挡不住广大互联网打工人的原因找到了!!!......
  • 中国信通院权威发布《中国算力中心服务商分析报告(2024年)》
     近日,中国信息通信研究院(简称“中国信通院”)发布《中国算力中心服务商分析报告(2024年)》。报告聚焦算力中心服务商的产业现状、市场规模、技术热点和发展趋势,通过对算力中心服务商的全面调研与综合分析,从总体规模、能力建设、财务状况、绿色低碳、集约发展、国际布局六个维度出......
  • 最新版Bertom降噪,压缩,均衡,简单好用有效,win和mac,支持Intel和M芯片
    一。DenoiserClassic3.07win&mac   1)DenoiserClassic是一个零延迟降噪插件,用于音乐,后期制作和现场使用。2)产品特点: BertomDenoiser是一个专为音乐和后期制作/对话设计的降噪插件。一个简单的用户界面,不依赖于“学习”静态噪声配置文件。 完全自动化。低CPU......
  • 2024/07/29 每日一题
    LeetCode682棒球比赛方法1:栈模拟classSolution:defcalPoints(self,operations:List[str])->int:nums=list();ans=0foropinoperations:ifop=="+":nums.append(nums[-2]+nums[-1])......
  • 2024牛客多校第四场
    F找规律题,点击查看全网最详解(臭不要脸的本人给自己打广告):2024牛客多校第四场F.GoodTree挑战全网最详解-liyishui-博客园(cnblogs.com)代码:#include<cstdio>#include<iostream>#include<cmath>#defineintlonglongusingnamespacestd;intT,x;intsol(){......