get和post的联系与区别

get和post是什么?HTTP协议中的两种发送请求的方法。

那么他们有什么区别呢?

在web开发时,我们可以很直观的看到他们的区别:

1.get将参数放入URL中,而post则通过request body传递参数

2.get比post更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

3.get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留。

4.get请求在URL中传送的参数是有长度限制的,而post没有。

 

其实他们在本质上并没有什么区别,接下来我们来讲讲原因:

开始的时候我们说过,GET和POST是HTTP协议中的两种发送请求的方法。

而HTTP基于TCP/IP的关于数据如何在万维网中如何通信的协议。
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。

所以如果给get加上request body,给post加上url参数,是可行的。

接下来举一个例子:

tcp就好比是交通工具--汽车,用来运送东西,但是如此多的汽车十分混乱,那我们需要进行分类,制定了分类规则:交通规则HTTP,我们的分类有:小汽车,公交车,货车等等。

我们把get贴在汽车身上,然后把参数放在小汽车的头顶(因为get请求参数是可见的),然后把post请求贴在货车身上,把参数放在货车车厢内(因为不可见)。但是这是一个准则,如果你违背准则,把货车车厢内的参数放一些在货车车顶,虽然看起来很奇怪,但也是可以的。

所以get和post本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

 

get和post还有一个很大的区别:get产生一个TCP数据包;post产生两个TCP数据包。

对于get方式的请求,浏览器会把 http header和参数一起传出去,只传一次。

对应post方式的请求,浏览器会传两次,第一次传http header,第二次再传递参数

就好比是先传http header告诉对方我要传数据了,然后再传递参数。

因此可以看出来,get的性能高一些,但是同样的,在网络不好的情况下,post更可靠,可以验证数据包完整性

 

参考自:https://blog.csdn.net/ever_siyan/article/details/87935455

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

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

相关文章

JS数组的需要注意的问题

一、在js中数组是我们经常使用的数据类型,也为我们提供了很多方法。但是有些方法需要注意使用: 1、indexOf(args):匹配一个数组中与args相等的项的索引位置,如果该数组包含这个匹配项则返回第一个匹配的索引,并停止匹配…

基金委最新改革:9大科学部整合为4个板块资助布局

来源:微信公众号科学网(sciencenet-cas)3月24日,国家自然科学基金委员会(以下简称自然科学基金委)第八届委员会第四次全体会议在北京召开。会议上,自然科学基金委主任、党组书记李静海作全委会工…

Leetcode--236. 二叉树的最近公共祖先(Java)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的…

万恶之源 - Python运算符与编码

格式化输出 现在有个需要我们录入我们身边好友的信息,格式如下: ------------ info of Alex Li ----------Name : Alex LiAge : 22job : Teacher Hobbie: girl------------- end ---------------- 我们现在能想到的办法就是用一下方法: name input(请输入姓名:) age …

Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 代码: /**…

世界最大、最复杂的GPU!这颗集成1000亿个晶体管的芯片长什么样?

来源:EETOP3月25日消息 英特尔于昨日举办了直播活动,新上任的 CEO 帕特基辛格(Pat Gelsinger) 发表了演讲,并展示了采用 7nm 工艺的 Xe-HPC 高性能 GPU,代号 “Ponte Vecchio”。这款产品封装了 47 个芯片&…

携带cookie进行数据请求

前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie的,而cors跨域请求和fetch请求默认是不携带coo…

Leetcode--145. 二叉树的后序遍历(迭代递归)

给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 代码: 迭代: 从根节点开始依次迭代,弹出栈顶元素输出到输出列表中,然后依次压入它的所有孩子节…

Lucene全文检索

目录结构: 1.全文检索 2.Lucene入门 3.Lucene进阶 全文检索 一, 生活中的搜索: 1.Windows系统中的有搜索功能:打开“我的电脑”,按“F3”就可以使用查找的功能,查找指定的文件或文件夹。搜索的范围是整个电脑中的文件资源。 2.Eclipse中的帮助…

区块链架构下 智慧城市发展加速

来源:中国经济时报智慧城市与区块链技术结合愈加紧密在城市建设和管理上,越来越多的城市开始尝试推动区块链技术在智慧城市项目中应用。中国有杭州聚能城、雄安新区;韩国有“区块链首尔城”;瑞士有“加密谷”楚格;爱沙尼亚和圣马力诺等国家也在纷纷构筑自…

Leetcode--94. 二叉树的中序遍历(迭代递归)

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 代码: 迭代: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;…

HDU-1003 Max Sum(动态规划)

题目回顾(HDU-1003): Max Sum Problem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 (-1) 5 …

揭秘人工智能背后鲜为人知的人工力量——数据标注

来源:帮尼资讯部分参考来源:大数据文摘、点宽DigQuant图片来源:网络尽管随着AI的普及,我们在生活中越来越依赖于人工智能,但“人工智障”的相关调侃也从来没有消失过。相信大家都知道,如果我们想要让AI准确…

Leetcode--144. 二叉树的前序遍历(迭代递归)

给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 代码: 迭代: /** * Definition for a binary …

诺贝尔奖也难以衡量其贡献,杨振宁的杨-米尔斯理论到底多厉害?

来源:宇宙时空杨振宁先生的贡献,宇称不守恒,打破了诺贝尔奖颁奖的时间记录,比爱因斯坦快了整整16年。可是,跟杨-米尔斯理论相比,它简直不值一提。如果把人类的科学发展比作一场大型的通关游戏现场&#xff…

Leetcode--1019. 链表中的下一个更大节点(java)

给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ... 。 每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val&a…

美国科研欲重回阿波罗登月水平,基础科学投入计划翻倍

来源:机器之心编辑:泽南、小舟在与中国的全面竞争中,美国希望能在基础科学领域里保持领先,对此其不惜准备将经费投入重新提高到 20 世纪 60 年代「阿波罗登月计划」时期的最高水平。美国众议院科学委员会希望在未来五年内将国家科…

django模板系统(上)

filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对齐 rjust 右对齐 center 居中 length 返回value的长度 slice 切片 first 取第一个元素 last 取最后…

StringBuilder初始化容量以及扩容机制(源码分析)

我们从源码来分析一下StringBuilder的底层原理: /*** Constructs a string builder with no characters in it and an* initial capacity of 16 characters.*/public StringBuilder() {super(16);} 定义一个无参的StringBuilder时,初始化容量为16.例如&…

爬虫爬取百度词条

页面是随时升级的,所以现在的链接不代表以后的链接,但是万变不离其宗,只要学会解析页面,那么就能走的更远。 码云链接:https://gitee.com/ALADL/baike_spider.git from baike_spider import url_manager,html_download…