回退

在浏览器回退时是无害的

会再次提交请求

请求缓存

可被缓存

不被缓存

获取数据

一般用去请求获取数据

一般作为发送数据到后台时使用

产生的URL地址可以被

不可以

编码

请求只能进行url编码

支持多种编码方式

参数数据类型

只接受ASCII字符

没有限制

请求设置

请求会被浏览器主动cache

不会,除非手动设置

请求数据是否保留

保留在浏览器历史记录中

不会保留在浏览器历史记录中

请求方式

比较常见的方式是通过url地址栏请求

最常见是通过form表单发送数据请求

请求数据

是从指定资源请求数据,请求参数在URL中

向指定资源提交要被处理的数据,请求参数封装在HTTP请求数据中

参数传递

参数通过URL传递

POST放在 body中

10、GET和POST请求的误区

针对上面常见的区别,如果面试的时候这么说,肯定是有很大的毛病,但是现在想想刚参加工作的时候也这样说过,现在回过头再想以前的错误认知,又有许多新的认识。

误区一:“用处:get常用于取回数据,post用于提交数据”

有这样一种说法:get替换post来优化网站性能,虽然这种说法没错,也的确get常被用于取回数据,但是post也被一些ui框架使用于取回数据,比如kendo ui中的grid,就是用post来接受数据的。所以结论是get、post用途也是因地制宜。如果你有使用过kendo UI,会发现分页、过滤、自定义的参数都包含在form data里面。

get是(仅支持url编码),post是放在body(支持多种编码)

query参数是URL的一部分,而GET、POST等是请求方法的一种,不管是哪种请求方法,都必须有URL,而URL的query是可选的,可有可无。

误区二“请求参数长度限制:get请求长度最有限制,post对请求数据没有限制”

看起来这句话是没有错的,其实GET方法提交的url参数数据大小没有限制,在http协议中没有对url长度进行限制(不仅仅是的长度),这个限制是特定的浏览器及服务器对他的限制。所以为了符合所有标准,url的最好不好超过最低标准的2083个字符(2k+35)。当然在做客户端程序时,url并不展示给用户,只是个程序调用,这时长度只收web服务器的影响了。对于中文的传递,一个汉字最终编码后的字符长度是9个字符。

最常见的form表单,浏览器默认的form表单,默认的-/x-www-form-,提交的数据会按照key value的方式,的ajax默认的也是这种-type。当然在post方式中添加一定是可以接收的到,但是在get方式中加body参数就不一定能成功接收到了。

误区三:“post比get安全性要高”

这里的安全是相对性,并不是真正意义上的安全,通过get提交的数据都将显示到url上,页面会被浏览器缓存,其他人查看历史记录会看到提交的数据,而post不会。另外get提交数据还可能会造成CSRF攻击。

误区四:“GET产生一个TCP数据包;POST产生两个TCP数据包。”

这一点理解起来还是有一定难度的,实际上,不论哪一种浏览器,在发送 POST 的时候都没有带 头, 也自然不会发 。通过抓包发现,尽管会分两次,body 就是紧随在 后面发送的,根本不存在『等待服务器响应』这一说。

从另一个角度说,TCP 是传输层协议。别人问你应用层协议里的 GET 和POST 有啥区别,GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。长的说:对于GET方式的请求,浏览器会把http 和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送,服务器响应100 ,浏览器再发送data,服务器响应200 ok(返回数据)。

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

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

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

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

--本文完,学习不停--

光荣之路Java测试开发班,2022年招生了!

光荣之路测试开发班,2022年招生了!

免费领取三节测试开发试听课

链接:

提取码:k5fv

无论上课或自学,

你首先需要准备:

每天 2 小时+的学习时间,

每天坚持写代码的习惯!

有投入才有产出,

10k+的涨幅需要 1 年以上的努力!

祝你成功!

光荣之路出品

公开课qq群:

发表回复

后才能评论