当前位置:首页 > Web开发 > 正文

可以通过设置method指定提交方式为GET或者POST方式

2024-03-31 Web开发

本篇文章分两部分,第一部分可以列为初为新人的装逼掉败模式,,第二部排列为修炼低调模式。
装逼掉败模式:99%的人对GET和POST的认识
修炼低调模式:1%不知道的进阶认识

GET和POST,在我们日常WEB开发中,是最常用的数据传输方法。面试中我们也经常会遇到。
一般我们在浏览器输入一个网址URL访谒网站都是GET方法请求;
在HTML FROM表单中,可以通过设置method指定提交方法为GET或者POST方法,默认为GET提交方法

HTTP界说了与处事器交互的差别要领,此中最根基的四种:GET,POST,PUT,DELETE,HEAD;
此中GET和HEAD被称为安适要领,因为使用GET和HEAD的HTTP请求不会孕育产生什么行动。不会孕育产生行动意味着GET和HEAD的HTTP请求不会在处事器上孕育产生任何功效。但是安适要领并不是什么行动都不孕育产生,这里的安适要领仅指不会改削信息。

GET和POST我们对照常用,其它几种实际应用对照少用到,在此仅作了解。

99%的人所认为的GET和POST 1. 传输方法(自我理解“显示方法”)

GET请求的数据会附加在URL之后,以?支解URL和传输数据,多个参数之间以&连接,
如"http://www.xxx.com/product?type=shoe&price=100&sex=male"
数据格局有以下注意点:

如果数据是英文字母/数字,原样发送;

如果是空格,转换为+;

如果是中文或其他字符,则把数据用Base64加密,
如"%E4%BD%A0%E5%A5%BD"此中%XX中的XX为该标记以16进制暗示的ASCII码。

POST请求会把请求的数据安排在HTTP请求包的包体中,GET传输的数据会直接袒露在URL中,而POST请求则不会。

2. 传输数据巨细

GET方法传输的数据最多只能是1024字节,
因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系,URL自己不存在参数上限的问题,HTTP协议规范也没有对URL长度进行限制。
这个限制是特定的浏览器及处事器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对付其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操纵系统的撑持。

注意:限制是针对整个URL长度,不仅是传输的数据长度。

POST方法理论上没有限制,可传较大的数据。起限制感化的是处事器的措置惩罚惩罚措施的措置惩罚惩罚能力。Apache, Nigx, IIS处事器自身可配置限制传输巨细。

3. GET在浏览器回退是无害的,而POST会再次提交请求 4. GET孕育产生的URL可以作为标签或存于历史记录中,而POST不成以 5. GET请求会被浏览器主动cahe,而POST不会,除非手动设置 6. 安适性

GET传输的数据直接袒露在URL中,如果我们在做用户登录时,需要传输登录帐号及暗码到后端做验证,如果用GET方法,那么账户暗码直接袒露在URL里面,是极其危险的。
而且浏览器缓存的机制,访谒过的网站URL会被生存在浏览器历史记录里,其他人可通过历史记录检察访谒网站URL,直接获取到传输的数据。
很可能受到 "Cross-site request forgery"(中文名称:跨站请求伪造) 打击。
不过POST的数据也是可以被拦截的。

总结:

GET请求是用来向处事器发送索取数据的一种请求,实际应用中数据不涉及到安适性,可用GET方法来向后端请求数据,
如分页或搜索关键词 "http://www.xxx.com/product?keywords=xxx&page=2";

POST请求是向处事器提交数据的一种请求,涉及到安适性的数据,用POST的方法来传输较GET更安适。

曾经的曾经,我也是那99%的一员,还把本身归纳的文章发给新人同事看,然后装逼掉败,被老大引导练成最后的这1%。

1%的人所拥有的

GET和POST素质上是没有区另外,它们是HTTP协议中的两种发送请求的方法。
HTTP是基于TCP/IP的关于数据如安在万维网中通信的协议,即HTTP的底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说:GET/POST都是TCP链接。
给POST带上url参数,给GET加上request body,技术上是可以实现的。

为了更便利的打点,制止混乱,HTTP给这些请求界说GET,POST,PUT,DELETE。
而数据巨细,则是因为浏览器的限制造成的。

所以GET和POST素质上就是TCP链接,并无分歧。但是由于HTTP的规定和浏览器/处事器的限制,导致他们在应用过程中浮现出一些差别

隐藏的Buff

GET孕育产生一个TCP数据包,而POST孕育产生两个TCP数据包

GET的请求,浏览器会把http header和data一并发送出去,处事器返回200(返回数据)
POST的请求,浏览器先发送header,处事器响应100 continue,浏览器再发送data,处事器响应200(返回数据)

因为POST需要两步,时间上消耗的多一点,
不过网络环境好的情况下,发一次包的时间和发两次包的时间分歧根基可以无视。
网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的长处

并不是所有浏览器POST发送两次包,Fiefox就发送一次。

最后的最后,当你以后被别人问到的时候,你就可以。。。。。。请开始你的演出

参考文章:

HTTP中GET与POST的区别 99%的错误认识

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31384.html