龙空技术网

HTTP请求中get和post的区别

武汉网盾科技 100

前言:

此时看官们对“火狐post请求”可能比较讲究,兄弟们都需要分析一些“火狐post请求”的相关知识。那么小编同时在网上收集了一些关于“火狐post请求””的相关资讯,希望大家能喜欢,各位老铁们快快来学习一下吧!

GET和POST是HTTP请求的两种基本方法。如果要说他们有什么不一样,web开发的相关人员都有自己的见解。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

你可能自己编写了无数的GET和POST请求,或者看到了许多权威网站总结的两者之间的区别。你已经确切知道他们应该何时使用。

在面试中被问到这个问题时,你的内心充满了自信和喜悦。你很容易给出“标准答案”:

·当浏览器回退时,GET是无害的,而POST将再次提交请求。

·GET生成的URL地址可以是Bookmark,但不能是POST。

· GET产生的URL地址可以被Bookmark,而POST不可以。

· GET请求会被浏览器主动cache,而POST不会,除非手动设置。

· GET请求只能进行url编码,而POST支持多种编码方式。

· GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

· GET请求在URL中传送的参数是有长度限制的,而POST么有。

· 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

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

· GET参数通过URL传递,POST放在Request body中。

(本标准答案参考自w3schools)

“不幸的是,这不是我们想要的答案!”

请告诉我真相。 。 。

如果我告诉你GET和POST本质上相同,那么你相信吗?

让我们脱下GET和POST的神秘外衣,坦白地见!

什么是GET和POST?是使用HTTP协议发送请求的两种方法。

什么是HTTP? HTTP是基于TCP / IP的协议,用于在万维网上通信数据。

HTTP的底层是TCP / IP。因此GET和POST的底层也是TCP / IP,也就是说,GET / POST都是TCP链接。 GET和POST可以做同样的事情。你如果一定要给GET加上request body,给POST带上url参数,技术上是完全可行的。

那么,“标准答案”里为什么有那么多区别?

在万维网世界中,TCP就像一辆用于各种用途的汽车。我们使用TCP运输数据,这是非常可靠的,绝不会出现丢件少件绑架乘客的现象。但是,如果所有在路上行驶的汽车都只有同一个功能,比如全是只送外卖的外卖车,那这个世界看起来是一团混乱,需要紧急救治病人没有救护车,只能用外卖车;需要运送紧急快件没有快递车只能用外卖车,整个交通系统一定会瘫痪。您需要紧急治疗。为了防止这种情况的发生,交通规则HTTP诞生了。 HTTP设置了汽车运输的几种服务类别,包括GET,POST,PUT,DELETE等。HTTP规定,在执行GET请求时,汽车应标有GET(将GET设置为set方法),并要求将传输的数据置于车顶(网址中),方便记录。如果是POST请求,则在汽车上贴POST标签,然后将货物放入车厢。当然,你也可以在GET期间秘密地将一些商品隐藏在车内,但这非常可耻;你还可以在POST期间将一些数据放在汽车的车顶上,这会让人们感到傻乎乎的。 HTTP只是行为准则,而TCP是实现GET和POST的基础。

但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。 “标准答案”中参数大小的限制从何而来?

在万维网世界中,还有另一个重要角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)是不同的运输公司。尽管从理论上讲,你可以在运输车顶上堆叠无限制的货物(在URL中无限添加参数)。但是,运输公司并不蠢,装卸货物的成本也是比较昂贵的,他们当然会限制单次装运的数量以控制风险,数据过多给浏览器和服务器带来了沉重负担。业界不成文的规则是,(大多数)浏览器通常将URL长度限制为2K字节,而(大多数)服务器处理的URL大小最大为64K,超出部分将不予处理。如果使用GET服务并将数据秘密隐藏在request body中,则不同的服务器将对其进行不同的处理。有些服务器会帮助您卸货然后读取数据,而有些服务器会直接忽略它,因此尽管GET可以带request body,但不能保证一定可以接收到。

好了,现在您知道GET和POST本质上是TCP连接,没有区别。但是,由于HTTP规定和浏览器/服务器限制,它们在应用程序过程中显示出一些差异。

你认为这篇文章结束了吗?

我们的大老板还在等着你玩呢。 。 。

这个老板有多神秘?当你尝试在Internet上查找“ GET和POST之间的区别”时,这些搜索结果将永远不会提及他。他到底是谁?

GET和POST之间还有另一个主要区别,简单的说:

GET生成一个TCP数据包; POST生成两个TCP数据包。

具体点说:

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

标签: #火狐post请求 #js post提交有特殊符号 #post请求地址