当前位置:网站首页>GET请求和POST请求区别
GET请求和POST请求区别
2022-08-09 11:38:00 【小刘学安卓】
get请求:
从指定的资源请求数据,用于获取数据,一般用于搜索排序和筛选之类的操作。
post请求:
向指定的资源提交要被处理的数据,用于将数据发送给服务器,一般用于修改和写入数据。
get请求和post请求本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
区别
(1)post请求更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存)
(2)post请求发送的数据更大(get请求有url长度限制,http协议本身不限制,请求长度限制是由浏览器和web服务器决定和设置)
(3)post请求能发送更多的数据类型(get请求只能发送ASCII字符)
(4)传参方式不同(get请求参数通过url传递,post请求放在request body中传递)
(5)get请求的是静态资源,则会缓存,如果是数据,则不会缓存
(6)get请求产生一个TCP数据包:get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;
post请求产生两个TCP数据包:post请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)
注意:在发送 POST 的时候都没有带 Expect 头,server 也自然不会发 100 continue。
post请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
get请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应
网络环境好的情况下,发一次包和发两次包的时间差别基本可以忽略。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
边栏推荐
猜你喜欢
《数字经济全景白皮书》银行业智能营销应用专题分析 发布
双向链表的各种操作
[工程数学]1_特征值与特征向量
TIC2000系列处理器在线升级
x86 Exception Handling and Interrupt Mechanism (1) Overview of the source and handling of interrupts
wpf实现简易画板功能(带截取画板,签名截图等等)
log4net使用指南(winform版,sqlserver记录)
x86异常处理与中断机制(3)中断处理过程
x86 Exception Handling and Interrupt Mechanism (3) Interrupt Handling Process
七夕?程序员不存在的~
随机推荐
信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束
在北京参加UI设计培训到底怎么样?
es6递归函数
父类的main方法可以被继承么?有什么特殊?
Two ways to enter the Oracle database
学生成绩查找系统
LeetCode 1413.逐步求和得到正数的最小值
buck型三相PFC
论文分享 | ACL2022 | 基于迁移学习的论元关系提取
Open3D point cloud average point spacing evaluation
redis缓存如何保证数据一致性
元宇宙:下一代互联网启程(附元宇宙深度报告PDF)
The use of signal function (signal) in C language
学长告诉我,大厂MySQL都是通过SSH连接的
PAT1008
推荐一个免费50时长的AI算力平台
数论知识点
redis主从复制
电解电容漏电流及均压
Summary of learning stages (knapsack problem)