惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
小众软件
小众软件
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
J
Java Code Geeks
WordPress大学
WordPress大学
The Cloudflare Blog

陈圈圈的博客

保持积极心态的7个秘诀,使你更加愉快地面对生活。 - 陈圈圈的博客 Centos将/home分区扩容至/根目录分区,解决根分区空间不足问题 - 陈圈圈的博客 常用的端口及其服务以及注释等,记录下来,方便后续使用。 - 陈圈圈的博客 在线处理雅马哈YGX文件,导出X,Y,R坐标及元件CAD - 陈圈圈的博客 移动魔百盒CM211-1-CH机顶盒安装ARMbian折腾经历 - 陈圈圈的博客 Centos7下安装python3.8运行环境 - 陈圈圈的博客 使用Fontmin进行字体精简及优化 - 陈圈圈的博客 在Linux上使用chatgpt-on-wechat项目部署微信机器人,实现个人微信接入智能AI聊天 - 陈圈圈的博客 常见的HTTP状态码及解释 - 陈圈圈的博客 Linux操作系统常见的目录结构及其简单说明 - 陈圈圈的博客 html禁止复制,剪切,禁止审查元素,禁止F12代码! - 陈圈圈的博客 Linux常用的一些命令参数及参数说明 - 陈圈圈的博客 网络安全威胁:如何才能保护个人信息和隐私? - 陈圈圈的博客 我们究竟如何正确看待精神内耗呢? - 陈圈圈的博客 我们究竟如何才能保持积极心态? - 陈圈圈的博客 怎样才能拥有积极乐观的心态? - 陈圈圈的博客
GET请求和POST请求的区别 - 陈圈圈的博客
陈圈圈 · 2024-05-17 · via 陈圈圈的博客

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数据包;post请求产生两个TCP数据包(get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;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在验证数据包完整性上,有非常大的优点。