前后端数据交互(八)——请求方法 GET 和 POST 区别
WEB 开发同学一看 get 和 post 请求方法的区别,第一感觉都是 So easy!
学习ajax、fetch、axios时,发送网络请求携带参数时,都需要分别处理get和post的参数。所以我们需要学习get和post的区别,以便更好地进行前后端数据交互。get 和 post 区别你到底知道多少呢?
一、GET 和 POST的区别
GET |
POST |
|
后退按钮/刷新 |
无害 |
数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 |
可收藏为书签 |
不可收藏为书签 |
缓存 |
能被缓存 |
不能缓存 |
编码类型 |
application/x-www-form-urlencoded |
application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 |
参数保留在浏览器历史中。 |
参数不会保存在浏览器历史中。 |
对数据长度的限制 |
是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 |
无限制。 |
对数据类型的限制 |
只允许 ASCII 字符。 |
没有限制。也允许二进制数据。 |
安全性 |
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET ! |
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 |
数据在 URL 中对所有人都是可见的。 |
数据不会显示在 URL 中。 |
二、本质区别
2.1http协议
浏览器和服务器之间是通过http协议进行数据通信的,而get和post是http协议其中的两个方法。想要更多了解http协议,请点击《网络请求详解》。
http协议底层是 TCP/IP ,把TCP比作汽车,用TCP给浏览器和服务器之间运输数据,它很可靠,从不会发生数据丢失现象,但是如果路上跑的全是一模一样的TCP车辆,那这个世界就非常混乱,整个系统就会瘫痪。为了避免这种情况发生,http 定义了交通规则,给汽车运输设定了好几个服务类别,有 GET、 POST、 PUT、 DELETE 等等。它们的作用分别为:
- GET:从服务器上获取数据,仅仅查询服务器上的数据,不进行修改。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT:从客户端向服务器传送的数据,也就是添加数据。
- DELETE:字面意思删除,客户端请求服务器删除指定的内容。
当执行GET请求时,汽车贴上get标签,而且要求把货物放到车顶(url)方便记录,当执行POST请求时,贴上post标签,将货物放置车厢内(body)。
2.2、为什么说 get 比 post 更快?
get 产生一个TCP数据包,而 post 产生两个数据包。
get 发送数据的时候,url把header和data数据带着一起传送到服务器,然后返回结果。但是 post 会先发送 header 到服务器,服务器响应 100 之后,继续向浏览器发送data,服务器接收完之后,会验证数据完整性,然后返回结果。
post 要比 get 多进行一次数据传输,所以 get 比post更快。好多人想着,为了提升网站速度,把所有post改成get方式,这样合适吗?
- 网速快的时候,发一次数据和发两次数据时间差一点点,基本可以忽略,但是网速慢的时候,post 可以验证数据完整性,有非常大的优点。
- get 和 post都有自己的语义,不能随便混用。
- 并不是所有浏览器 post 都会发送两次数据,火狐浏览器只发一次。
三、面试怎么回答?
- post更安全。
- post可以发送更大数据。
- post能发送更多数据类型。
- post比get慢。
- post用于修改和写入数据,get一般用于分享搜索筛选之类操作。
前后端数据交互(八)——请求方法 GET 和 POST 区别的更多相关文章
- 两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)
一个HTML页面只能显示HTML代码信息,不能与数据库进行数据的交互.asp.net方案提供了网页与数据库交互的方法,这里举出两种:①aspx文件 ②ashx文件+ajax技术 一.创建数据库 这里以 ...
- vue-resource的使用,前后端数据交互
vue-resource的使用,前后端数据交互 1:导入vue与vue-resource的js js下载: https://pan.baidu.com/s/1fs5QaNwcl2AMEyp_kUg ...
- 对GraphQL-BFF:微服务背景下的前后端数据交互方案的研究-------引用
随着多终端.多平台.多业务形态.多技术选型等各方面的发展,前后端的数据交互,日益复杂. 同一份数据,可能以多种不同的形态和结构,在多种场景下被消费. 在理想情况下,这些复杂性可以全部由后端承担.前端只 ...
- web前后端数据交互
前后端数据交互是每一名web程序员必须熟悉的过程,前后端的数据交互重点在于前端是如何获取后端返回的数据,毕竟后端一般情况下只需要将数据封装到一个jsonMap,然后return就完了.下面通过一个li ...
- 前后端数据交互处理基于原生JS模板引擎开发
json数据错误处理,把json文件数据复制到----> https://www.bejson.com/ 在线解析json 这样能直观的了解到是否是json数据写错,在控制台打断点,那里错误打那 ...
- 前后端数据交互利器--Protobuf
Protobuf 介绍 Protocol Buffers(又名 protobuf)是 Google 的语言中立.平台中立.可扩展的结构化数据序列化机制. https://github.com/prot ...
- 前后端数据交互(二)——原生 ajax 请求详解
一.ajax介绍 ajax 是前后端交互的重要手段或桥梁.它不是一个技术,是一组技术的组合. ajax :a:异步:j:js:a:和:x:服务端的数据. ajax的组成: 异步的 js 事件 其他 j ...
- 前后端数据交互(四)——fetch 请求详解
fetch 是 XMLHttpRequest 的升级版,使用js脚本发出网络请求,但是与 XMLHttpRequest 不同的是,fetch 方式使用 Promise,相比 XMLHttpReques ...
- SpringMVC前后端数据交互总结
控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是ser ...
随机推荐
- DNS投毒学习分析总结
[一]背景 今晚看一份日志,数据很奇怪.大佬说是DNS投毒,盲点就来了,学习一下~ [二]内容 https://zhuanlan.zhihu.com/p/92899876 看完内容发现属于之前写的DN ...
- 阿里内部资料:Android开发核心知识笔记共2100页,58万字,完整版开放下载
作为一个3-5年的Android工程师,我们经常会遇到这些瓶颈: 1.技术视野窄长期在小型软件公司,外包公司工作,技术视野被限制的太厉害 2.薪资提升难初中级Android岗位薪资上升空间有限,基本上 ...
- Linux 中的虚拟网络接口
独立博客地址:https://ryan4yin.space/posts/linux-virtual-network-interfaces/ 本文用到的字符画工具:vscode-asciiflow2 L ...
- Apache网页优化与安全
目录 一.Apache网页优化 1.1.概述 1.2.gzip介绍 1.3.Apache的压缩模块 二.网页压缩实验 2.1.检查是否安装mod_deflate模块 2.2.重新编译安装Apache添 ...
- Mysql聚合函数count(1) sum(1)结果返回0和NULL
1.count(1) 返回为0 如果所查询的表或者where条件筛选后得到的结果集为空,则 count(1)返回为 0 如: select count(id) from test; select co ...
- 基于 CODING CD + Nocalhost 在大型应用的 ChatOps 实践
本文作者:红亚科技 CTO--卢兴民 红亚科技聚焦信息技术发展,为信息技术相关专业提供优质教学服务 背景 ChatOps 最早起源于 GitHub,它以沟通平台为中心,通过与机器人产生对话和交互,使开 ...
- jpa中使用Query判断条件查询
jpa中使用Query判断条件查询 @Query(value = " select m.* from mining_area as m " + " where 1 = 1 ...
- exportfs命令 – 管理NFS服务器共享的文件系统
exportfs命令需要参考配置文件"/etc/exportfs".也可以直接在命令行中指定要共享的NFS文件系统. 语法格式: export [参数] [目录] 常用参数: -a ...
- vue 引入 leaflet1.4.0
安装leaflet cnpm install leaflet@~1.4.0 --save // 在main.js 中设置如下 //引入样式文件 import 'leaflet/dist/leaflet ...
- 【springcloud】springcloud与springboot的版本对应关系
官方网址:https://start.spring.io/actuator/info 更新时间:2019-12-01 spring-cloud: "Finchley.M2": &q ...