前后端数据交互

前后端数据交互

  • 网页上所有的数据都是来源于后端,比如淘宝或者京东的秒杀,用户的登陆或者注册,这些都需要借助于后端来存储数据。我们前端需要做的就是把数据发送给后端,后端发送给我们的数据我们要拿到把它显示到页面上,这个过程就是前后端数据交互的过程,简称交互。

  • 前端发送数据给后端的方式

    • 表单
    • ajax
  • 表单登陆的案例

<form action="https://www.baidu.com" method="get"><input type="text" name="username"><input type="text" name="age"><button>登陆</button>
</form>
<form action="https://www.baidu.com" method="post"><input type="text" name="username"><input type="text" name="age"><button>登陆</button>
button>
</form>

请求方式

GET 请求

  • 参数以 querystring 的形式发送,也就是直接拼接在 请求路径的后面
  • GET 请求会被浏览器主动缓存
  • GET 请求根据不同的浏览器对长度是有限制的
    • IE: 2083 个字符
    • FireFox: 65536 个字符
    • Safari: 80000 个字符
    • Opera: 190000 个字符
    • Chrome: 8182 个字符
    • APACHE(server): 理论上接受的最大长度是 8192 个字符(有待商榷)
  • 对参数的类型有限制,只接受 ASCII 码的格式
  • GET 请求是明文发送,相对不安全

POST 请求

  • 参数以 request body的形式发送,也就是放在请求体中
  • POST 请求不会被浏览器主动缓存,除非手动设置
  • POST 请求理论上是没有限制的,除非服务端做了限制
  • 对参数类型没有限制,理论上可以传递任意数据类型,只不过要和请求头对应
  • POST 请求是密文发送,相对安全

区别

  1. get请求参数会显示在地址栏,post不会,get没有post安全(安全性角度
  2. get请求参数有长度限制,post不会(数据量角度
  3. get请求参数只能显示ASCII码表支持的字符,有中文或者空格会乱码,post不会(编码乱码角度
  4. get请求会默认被浏览器缓存,post不会被缓存(缓存角度

HTTP协议

含义

http协议是前后端数据交互过程中遵循的协议

协议内容

  1. 前后端建立链接,三次握手

    • 目的:确保前后端都能知道双方正常的收发信息

    • 第一次握手:客户端要向服务端发起连接请求,首先客户端随机生成一个起始序列号x,那客户端向服务端发送SYN=1标识符,序列号seq=x。

    • 第二次握手:服务端收到客户端发过来的报文后,发现SYN=1,知道这是一个连接请求,于是将客户端的起始序列号x存起来,并且随机生成一个服务端的起始序列号y。然后给客户端回复一段报文,回复报文包含SYN和ACK标志(也就是SYN=1,ACK=1)、序列号seq=y、确认号ack=x+1(客户端发过来的序列号+1)。

    • 第三次握手:客户端收到服务端的回复后发现ACK=1并且ack=x+1,于是知道服务端已经收到了序列号为x的那段报文;同时发现SYN=1,知道了服务端同意了这次连接,于是就将服务端的序列号y给存下来。然后客户端再回复一段报文给服务端,报文包含ACK标志位(ACK=1)、ack=y+1(服务端序列号+1)、seq=x+1。当服务端收到报文后发现ACK=1并且ack=y+1,就知道客户端收到序列号为y的报文了,就这样客户端和服务端通过TCP建立了连接。

    • 三次握手图示

  2. 前端向后端发起请求request(前端写代码实现),每一个请求都会有一个请求报文,请求报文在浏览器里面的network下面的request headers里面查看请求头,在payload里面查看请求体(具体的请求数据)

    • 请求头都是键值对的方式(记住几个重要的请求头)
  3. 后端接受到前端发送过来的报文,对前端做出响应response,每一个响应都会有一个响应的报文,响应的报文可以在network里面的response headers查看,在previewresponse里面查看后端返回的数据

  4. 前后端断开链接,四次挥手

    • 目的:确保前后端双方都知道双方即将断开链接

    • 第一次挥手:当客户端的数据都传输完成后,客户端向服务端发出连接释放报文包含FIN标志位(FIN=1)、序列号seq=u

    • 第二次挥手:服务端收到客户端发的FIN报文后给客户端回复确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=u+1、序列号seq=v。此时服务端处于关闭等待状态,而不是立马给客户端发FIN报文,这个状态还要持续一段时间,因为服务端可能还有数据没发完

    • 第三次挥手:服务端将最后数据(比如50个字节)发送完毕后就向客户端发出连接释放报文,报文包含FIN和ACK标志位(FIN=1,ACK=1)、确认号和第二次挥手一样ack=u+1、序列号seq=w

    • 第四次挥手:客户端收到服务端发的FIN报文后,向服务端发出确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=w+1、序列号seq=u+1。注意客户端发出确认报文后不是立马释放TCP连接,而是要经过一段时间后才释放TCP连接。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端早一些。

    • 四次挥手图示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode131分割回文串

递归树 下面这个代码是遍历处所有的子串 #include <bits/stdc.h> using namespace std; class Solution { public:vector<vector<string>> vvs;vector<string> vs;vector<vector<string>> partition(string s) {dfs(0,s);return vvs;}vo…

【Linux】进程 基础概念

目录 1.进程的基本概念 1.1基本概念 1.11进程与程序的区别: 1.12并发与并行的区别 1.2进程的状态及转换 1.3描述进程—–PCB task_struct -- PCB的一种 1.4查看进程 ps 命令 top 命令 2.进程创建 3.进程状态 ps aux / ps axj 命令 进程状体具体讲解 R运行状态 S…

【Pt】马灯贴图绘制过程 01-制作基础色

目录 一、导入模型并烘焙 二、制作基础底漆 &#xff08;1&#xff09;底漆层 &#xff08;2&#xff09;水痕层 &#xff08;3&#xff09;指纹层 一、导入模型并烘焙 1. 导入模型&#xff0c;马灯模型如下所示 2. 在纹理集设置中点击“烘焙模型贴图” 设置输出大小为…

Linux基本指令篇

在前边&#xff0c;我们已经了解过了Linux操作系统的发展和应用&#xff0c;从该篇起&#xff0c;就正式进入对Linux的学习。 今天我们就来在Xshell上远程登录我们的云服务器。首先我们要知道自己云服务器的公网ip&#xff0c;然后修改一下密码。 点击跳转 修改完密码之后我们…

idea中 错误:找不到或无法加载主类

很神奇的就是maven打包是正常的&#xff0c;本来也是好好的&#xff0c;突然启动就报错了&#xff0c;我百度了很急&#xff0c;没什么结果&#xff0c;找了公司6年工作经验的老员工&#xff0c;还是搞了好久&#xff0c;我站了好久也是没解决。后来我也是在想maven的jar包都能…

JAVA学习笔记21

1.IDEA的使用 1.ctrl B 快速定位到方法 2.ctrl Y 快速删除行 3.ctrl D 快速复制行 4.ctrl H 查看继承的层级关系 5.快速格式化代码 ctrl shift L 6.alt R 快速允许程序 7.ctrl / 快速添加注释 1.包(软件包) 1.1包的三大作用 1.区分相同名字的类 2.当类很多的…

kubernetes用户权限管理详解——普通用户[kubeconfig]

原文&#xff1a; 学一下https://suxueit.com/article_detail/tdVymI4BWZdDRfKqnv1y K8s 的用户分为两类 普通用户&#xff1a;普通用户是指集群外部的人或系统管理&#xff0c;它们不由 Kubernetes 直接管理。普通用户的证书、密钥和权限管理通常由外部系统&#xff08;如企业…

【绘图案例-图形上下文栈 Objective-C语言】

一、接下来,我们来说这个“图形上下文栈” 1.我们还是把之前的copy这份儿代码复制一下,改个名字,叫做“02-图形上下文栈”, 好,我们把刚才那个圆形拿过来,那条线也拿过来,用CGContextAdd:这种方式, 把第一步,获取当前上下文,也拿过来,第三步,渲染,也拿过来, 打开…

买婴儿洗衣机怎么选择?四款优良婴儿洗衣机极力推荐

由于刚出生没多久的宝宝的肌肤相对来说会比较娇嫩&#xff0c;因此普遍的宝宝衣物都是采用纯棉材质&#xff0c;所以对于宝宝的衣服要特殊呵护&#xff0c;要求有无菌、无刺激的清洗环境。然而婴儿专用的洗衣机就应运而生&#xff01;婴儿洗衣机的优点很多&#xff0c;一是省时…

从 Azure 部署生成本地 .NET 密钥

作者&#xff1a;Frank Boucher 排版&#xff1a;Alan Wang 通常&#xff0c;示例项目以一些“魔术字符串”开始&#xff0c;这些变量包含与部署或外部资源相关的 URL 和关键信息&#xff0c;我们必须更改这些信息才能使用示例。例如在 .NET 中&#xff0c;它可能如下所示&…

Android 开发投屏软件

一、背景 作为Android开发总会有给他人share自己APP情况&#xff0c;一般在线会议投屏&#xff0c;总是需要在手机上安装对应会议软件特别麻烦~ 二、投屏 Android Studio已经自带了投屏能力&#xff0c;可以在电脑端直接控制手机&#xff0c;同步起来非常方便简单 打开步骤 …

linux ubuntu 在保存文件不被允许,但是root权限

现象&#xff1a;MobaXterm_Personal_2登录到服务器&#xff0c;切换到root用户&#xff0c;然后使用MobaXterm_Personal_2自带的编辑器&#xff0c;编写文件&#xff0c;进行保存不被允许&#xff1b;查看目录root是有权限进行修改文件的&#xff0c;然后使用vim进行修改保存&…

阿里云OSS, 跨域请求, No ‘Access-Control-Allow-Origin‘

问题 阿里云OSS, 跨域请求, No ‘Access-Control-Allow-Origin’ 错误标签&#xff1a;阿里云OSS, 跨域请求, No ‘Access-Control-Allow-Origin’ 浏览器具体报错内容&#xff1a; Access to XMLHttpRequest at ‘https://xxx.oss-cn-guangzhou.aliyuncs.com/xxx.jpg’ from …

LLM - Weight-Decomposed Low-Rank Adaptation 之 DoRA

目录 Abstract 1.Introduce 2.Related Works 2.1 Parameter-Efficient Fine-Tuning (PEFT) 2.2 LoRA (Hu et al., 2022) and its variants 3.Pattern Analysis of LoRA and FT 3.1 Low-Rank Adaptation (LoRA) 3.2. Weight Decomposition Analysis 4.Method 4.1. Wei…

在react项目用echarts绘制中国地图

文章目录 一、引入echarts二、下载地图json数据三、编写react组件四、组件使用 一、引入echarts 安装&#xff1a;npm i echarts --save 二、下载地图json数据 由于echarts内部不再支持地图数据&#xff0c;所以要绘制地图需要自己去下载数据。建议使用阿里云的。 地址&…

Chrome 设置在新窗口中打开链接(已登录google账号版)

Chrome的链接默认是在原标签页中打开的&#xff0c;如果要在新窗口中打开&#xff0c;需要自己自行设置&#xff0c;在此&#xff0c;针对已经登录google账号的chrome浏览器怎么进行设置进行说明。 一、点击登录图标->更多设置 二、选择其他设置->在新窗口中打开搜索结果…

砍树c++

题目&#xff1a; 代码&#xff1a; #include<bits/stdc.h> using namespace std; long long n,m,a[100000005]; bool jltm(int x){long long sum0;for(int i1;i<n;i){if(a[i]>x) sumsuma[i]-x;}//计算此时锯片高度砍掉的木材if(sum>m) return 1;else return 0…

怎么在UE游戏中加入原生振动效果

我是做振动触感的。人类的五感“视听嗅味触”&#xff0c;其中的“触”就是触觉&#xff0c;是指皮肤、毛发与物体接触时的感觉。触感可以带来更加逼真的沉浸式体验。但也许过于司空见惯&#xff0c;也是习以为常&#xff0c;很多人漠视了触感的价值。大家对触感的认知还远远不…

Oracle19c ADG搭建

文章目录 一、环境配置1、主机环境2、host文件配置 二、主库配置1、 开启归档2、redo日志3、修改参数文件4、配置TNS文件5、静态监听6、拷贝密码文件 三、备库配置1、开启归档2、redo日志3、修改参数文件4、配置TNS文件5、配置静态监听 四、构建DG1、验证监听2、主库登入rman&a…

排序——选择排序(直接选择排序和堆排)

本专栏和大家分享关于排序的算法,其中有插入排&#xff08;直接插入排序和希尔排序&#xff09;、选择排序&#xff08;直接选择排序和堆排&#xff09;、交换排序&#xff08;冒泡排序和快速排序&#xff09;、归并排序以及其他非基于比较的排序 本文与大家分享选择排序 目录 …