• 我的订阅
  • 科技

面试中get和post的区别

类别:科技 发布时间:2022-12-17 01:00:00 来源:自学软件测试自习室

get比post更不安全,因为参数直接暴露在URl中,所以不能用来传递敏感的信息。对参数的数据类型,get只接受ASCLL字符,而post没有限制get在URl中传递的参数是有长度限制的,而post没有get请求会被浏览器主动cache,而post不会除非手动设置get在浏览器回退时无请求的,而post会再次请求get参数通过URl传递,post放在request body中get请求只能进行url编码,而post支持多种编码方式get比post更快

常见误区

误区1、get在URl中传递的参数是有长度限制的,而post没有

首先,HTTP协议并未规定get和post的长度限制,get的最大长度限制是因为浏览器和web服务限制了URL的长度,不同的浏览器和web服务器,限制的最大长度不一样。

即使get有长度限制,也是限制整个URL的长度,而不仅仅是参数值数据长度,就要看各个浏览器厂家的规定或者根据web服务器的处理能力来决定的。

以下就是对各种浏览器和web服务器的最大处理能力做一些说明:IE (Browser):URL最大长度限制为2083个字符。Firefox owser):对于Firefox浏览器URL的长度限制为65,536个字符。afari (Browser):URL最大长度限制为 80,000个字符。Opera (Browser):URL最大长度限制为190,000个字符。oogle (chrome):URL最大长度限制为8182个字符。che (Server):能接受最大url长度为8,192个字符。Microsoft Internet Information Server(IIS):能接受最大url的长度为16,384个字符。

为了符合所有标准,url的最好不好超过最低标准的2083个字符(2k+35)。当然在做客户端程序时,url并不展示给用户,只是个程序调用,这时长度只受web服务器的影响了。对于中文的传递,一个汉字最终编码后的字符长度是9个字符。

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

误区2、post比get更安全

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

误区3、为什么get比post快

post请求包含更多的请求头,(如content-type),但这影响不了多少,最重要的是post在真正接受接受数据之前会先将请求头发送给服务器进行确认,然后才是真正的发送数据。

看看post的请求过程:浏览器请求tcp连接(第一次握手)服务器答应进行tcp连接(第二次握手)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)服务器返回100 Continue响应浏览器发送数据服务器返回200 OK响应

get的请求过程:浏览器请求tcp连接(第一次握手)服务器答应进行tcp连接(第二次握手)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)服务器返回200 OK响应

误区4、GET产生一个TCP数据包;POST产生两个TCP数据包。

我在网上查了查,千万不要被某些内容引导你。

GET和POST还有一个重大区别,简单的说:

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

长的说:

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

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

这个结论是错误的。

而实际上,不论哪一种浏览器,在发送 POST 的时候都没有带 Expect 头,server 也自然不会发 100 continue。通过抓包发现,尽管会分两次,body 就是紧随在 header 后面发送的,根本不存在『等待服务器响应』这一说。

注:误区4观点参考网上大神结论。

误区5、get和post都符合安全性和幂等性

幂等性:就是对数据库的操作次数,一次或者多次操作获得的结果是一样的,则认为符合幂等性。

安全性:对数据库的操作没有改变数据库中的数据,则认为符合安全性。

从数据库层面来看,GET请求方式是做查询操作,因此不会改变数据库中原有的数据,认为符合安全性。事实上GET请求可能会出现多次请求的结果(例如在两次请求中间对数据库中的数据作了更改),从这来说是不符合幂等性的定义,但是因为GET请求知识查询数据库,不会对数据库做任何更改,因此也认为是幂等的。

POST请求方式是既不幂等又不安全,首先POST请求方式往数据库中提交数据的,因此会改变数据库中的数据。其次,POST请求方式每次获得的结果都有可能不一样,因为POST请求是作用在上一级的URL上的,则每一次请求都会添加一份新资源(这也是POST和PUT方式的最大区别,PUT方式是幂等的)。

赶紧学,我们不希望下次见到你还是那些老套的区别,我们只想简单的知道你到底对get和post有没有去深入的了解。

面试中get和post的区别

返回搜狐,查看更多

责任编辑:

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2022-12-17 05:17:49

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

皕杰报表点击导出按钮后网页变空白问题
...出现问题。那么url的长度是不是有限制呢?这与服务器和浏览器相关,不同的服务器和浏览器对url的要求是不同的。1、IE浏览器对URL的最大限制为2083(2k)个字符2
2023-01-10 13:43:00
cookie与session的区别
...p>存储内容字符串任何信息存储位置浏览器服务器大小<4K无限制session一般只有时间限制,没有大小限制,但是session是在服务器端的,应该节约服务器端的资源;而
2022-12-16 02:02
浏览器打不开某些网站是什么原因导致,试试用这些方法来解决
不少小伙伴使用一些浏览器浏览网页的时候,发现打不开某些网站,这是什么原因导致的呢?本文讲汇总几个常见的原因,我们可以通过以下几个原因排查,并且使用下文的解决方法可以试试能否打开网
2023-01-21 09:00:00
谷歌调整“隐藏ip地址”选项提高用户安全性
5月23日消息,谷歌今年2月在Canary频道Chrome浏览器版本中,“设置”>“隐私和安全”>“跟踪保护”路径下引入了“隐藏IP地址”选项
2024-05-24 00:04:00
微软edge浏览器加入“手机上传”功能
2月21日,微软最新的稳定版本Edge浏览器在Windows11/10端加入了“手机上传”功能。这一功能允许用户直接从移动设备上上传文件,适用于所有网站,并且没有文件格式限制。要
2024-02-22 15:23:00
微软 Edge 浏览器不再支持删除云端同步数据
...(ResetSync)功能。微软宣布自Edge114版本开始,MicrosoftEdge浏览器不再提供“重置同步”按钮
2023-06-10 13:10:00
windowsserver2022全新功能曝光!
...?下面我们一起来看看WindowsServer2022的全新功能!一、默认浏览器为ChromiumEdge 这么多年以来都是陈旧的IE用作WindowsServer中浏览Web的默认工具
2023-01-05 11:50:00
国网江苏省电力申请基于身份证指纹安全 U 盾装置网页浏览器认证专利,提供用户信息和数据保护
...限公司申请一项名为“基于身份证指纹安全 U 盾装置网页浏览器的认证方法”的专利,公开号 CN 119312312 A
2025-01-18 13:17:00
网页浏览器渲染引擎
本篇文章中,我们主要分享一下常用(见)的网页浏览器(WebBrowser):认识浏览器认识浏览器的组件01网页浏览器是什么?网页浏览器是一个软件界面(接口),可以访问互联网的资源
2022-12-27 13:42:00
更多关于科技的资讯: