首页 > 其他分享 >GET 和 POST 的区别

GET 和 POST 的区别

时间:2024-06-07 15:22:02浏览次数:11  
标签:body 区别 GET TCP POST 打开

根据技术规格文档,GET 和 POST 最大的区别是语义。

区别一:幂等性 (重复操作不改变结果 )

  1. 由于 GET 是读,POST 是写,所以 GET 是幂等的,POST 不是幂等的。
  2. 由于 GET 是读,POST 是写,所以用浏览器打开网页会发送 GET 请求,想要 POST 打开网页要用 form 标签。
  3. 由于 GET 是读,POST 是写,所以 GET 打开的页面刷新是无害的,POST 打开的页面刷新需要确认。
  4. 由于 GET 是读,POST 是写,所以 GET 结果会被缓存,POST 结果不会被缓存。
  5. 由于 GET 是读,POST 是写,所以 GET 打开的页面可被书签收藏,POST 打开的不行(安全考虑)。

区别二:请求参数

  1. 通常,GET 请求参数放在 url 里,POST 请求数据放在 body(消息体)里。(通常情况如此,主要原因是后端框架可能存在限制,不支持读取get的body)
  2. GET 比 POST 更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  3. GET 请求参数放在 url 里是有长度限制的(浏览器和服务器实现,不是协议限制),而 POST 放在 body 里没有长度限制(可配置)。

区别三:TCP packet

  1. GET 产生一个 TCP 数据包;POST 产生两个或以上 TCP 数据包。

标签:body,区别,GET,TCP,POST,打开
From: https://www.cnblogs.com/codejnp/p/18237264

相关文章

  • Arduino UNO和Nano的区别
    ArduinoUNO和ArduinoNANO的区别ATmega328pUNO对于用过Arduino开发板的小伙伴来说应该是比较熟悉的了,主要说说NANO,UNO和NANO控制芯片同样用的ATmega328p,不同的是芯片封装不同,UNO是DIP28封装NANO是TQFP32封装(NANO比UNO多了4个引脚出来)图Arduino Uno图Arduino N......
  • 在我的 ngrx 效果中,switchMap 和其他运算符的区别
    我有以下效果publicSetProperTab$=createEffect(publicSetProperTab$=createEffect(()=>{返回this.actions$.pipe(ofType(actions.SetProperTab)、switchMap((action)=>;this.store$.select(selectors.GetHasLogicalPr......
  • 机械硬盘和SSD有什么区别?
    机械硬盘(HDD)和固态硬盘(SSD)在多个方面存在显著差异: 1.**工作原理**:机械硬盘采用传统的磁性存储技术,通过旋转磁盘和读写头之间的物理接触来读写数据。而固态硬盘则采用半导体存储技术,通过电子信号的传输来读写数据。2.**读写速度**:由于工作原理的不同,固态硬盘的读写速度通......
  • python系列:FASTAPI系列 04-GET请求 params参数
    FASTAPI系列04-GET请求params参数FASTAPI系列04-GET请求params参数前言一、查询参数二、参数的默认值三、多路径查询参数四、查询参数为必填项总结FASTAPI系列04-GET请求params参数前言get请求的参数在url后面携带,通常称做queryparams一、查询参数在......
  • scanf(),gets(),puts(),fgets()函数的使用
     scanf()scanf按%d输入数字或%s输入字符串时,忽略空格、回车或制表符等空白字符(被作为数据的分隔符) intmain(){ inta=0; intb=0; charc[12]; scanf("%s",&c); printf("c=%s",c); return0;}空格后面的world没有被读进去加一句scanf语句,world被读走了in......
  • Redis(事务、持久化、高可用 、高可扩、过期删除、内存淘汰)说明、分析、区别
    Redis高级理解Redis事务机制掌握Redis持久化机制理解Redis高可用—主从复制、哨兵模式理解Redis高可扩—RedisCluster数据分片掌握Redis过期删除策略掌握Redis内存淘汰策略1事务机制1.1场景分析以关注为例,在B站上程序员关注了A,同时A也关注了程序员,那么......
  • 在Linux中,BASH 和 DOS之间的区别是什么?
    BASH(BourneAgainSHell)和DOS(DiskOperatingSystem)之间存在显著的区别,这些差异不仅体现在它们的设计哲学、功能特性上,也反映在它们所服务的操作系统环境及其用途上。以下是一些主要的区别:性质和定位:BASH:是一种命令行解释器(shell),它是用户与Linux或其他类UNIX操作系统交互......
  • EFCore和EF6的使用和区别
    1、Sqlserver是微软的亲儿子,很少会报错,EF报错问题最多出现在Mysql。以下使用mysql为例子C#一般很形象,带Core的都是.NetCore平台的。所以在.NetFramework平台我们使用EF6,也就是EntityFramework6在.NetCore平台使用EFCore2、直接上代码(.Net6)internalclassProgram{......
  • 字符数组VS字符串(一文搞懂有什么区别)
    当你在C++的程序中,经常会遇到两种字符串的表达方法,一种是以字符数组的方式,还有用string的,这二者到底有什么不同?下文将会帮彻底弄懂。因为许多函数参数当需要传入字符串的时候,有的代码中使用指向字符数组的指针来传递字符串,其实C++中传入字符数组,就相当于传入一个指向该数......
  • Java动态获取实现类 Class.forName(clazz).newInstance()和applicationContext.getBea
    Java动态获取实现类Class.forName(clazz).newInstance()和applicationContext.getBean,beanMap寻找方式,JavaMap定义和初始化方法1.定义枚举类MyServiceTypeEnum.javapackagecom.example.core.mydemo.bean;publicenumMyServiceTypeEnum{SUBMIT_ORDER_SUCCESS("s......