post请求,程序员:我终于知道post和get的区别了

2023-08-11 1331阅读

定义了三种请求方法:GET、POST 和 HEAD 方法。添加了五个新的请求方法:OPTIONS、PUT、DELETE、TRACE 和 CONNECT 方法。我们很熟悉其中的差异。http协议最常见的两种方法是GET和POST。事实上,其中一些答案并不准确。曾听过这样的说法:get代替post来优化网站性能,虽然这个说法是正确的,也确实get经常被用来检索数据,但是post也被一些ui框架用来检索数据,比如kendo ui中的grid使用post来接收数据。所以结论是get和post的使用也是因地制宜。get是querystring,post放在body中。http协议中url的长度没有限制。通过get提交的数据会显示在url上,页面会被浏览器缓存。此外,获取提交的数据也可能引发CSRF攻击。从另一个角度来看,TCP是传输层协议。

HTTP。 定义了三种请求方法:GET、POST 和 HEAD 方法。

HTTP。 添加了五个新的请求方法:OPTIONS、PUT、DELETE、TRACE 和 CONNECT 方法。

。 我们很熟悉其中的差异

http协议最常见的两种方法是GET和POST。 事实上,其中一些答案并不准确。

常见错误

程序员:我终于知道post和get的区别

获取并发布误解

鉴于以上常见的差异,如果你在面试时说出这样的话,那肯定有很大的问题。 我在学校面试的时候也大言不惭地说过这句话。 现在回想起来,想想以前的误区,又有了很多新的误区。 理解。

。 误区1

post请求,程序员:我终于知道post和get的区别了

“用途:get常用于检索数据,post用于提交数据”

曾听过这样的说法:get代替post来优化网站性能,虽然这个说法是正确的,也确实get经常被用来检索数据,但是post也被一些ui框架用来检索数据,比如kendo ui中的grid使用post来接收数据。 所以结论是get和post的使用也是因地制宜。 如果你用过kendo UI,你会发现分页、过滤、自定义参数都包含在表单数据中。

请求参数

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

查询参数是URL的一部分,GET、POST等都是请求方式之一。 无论使用哪种请求方式,都必须有一个URL,并且URL的查询是可选的,可有可无。

。 误区2

“请求参数长度限制:get请求长度最大为kb,post请求数据无限制”

这句话看上去没什么毛病,菜鸟教程也是这么说的。 虽然字面意思没有错误,但是理解一定是正确的。我想说的是,GET方法提交的url参数数据的大小是没有限制的。 http协议中url的长度没有限制(不仅仅是querystring的长度)。 此限制是特定浏览器和服务器施加的限制。

以下是各种浏览器和服务器最大处理能力的说明

post请求,程序员:我终于知道post和get的区别了

所以为了遵守所有标准,最好不要超过url的最小标准字符(k+)。 当然,做客户端程序时,url并不会显示给用户,只是程序调用,长度只受web服务器的影响。 对于中文传输来说,一个汉字的最终编码字符长度是字符。

最常见的form表单,浏览器默认的form表单,默认的content-type是

application/x-www-form-urlencoded,提交的数据会是key value的形式,jquery的ajax默认就是这种content-type。 当然,在post方法中添加querystring一定能接收到,但在get方法中添加body参数却不一定能成功接收。

。 误区3

“发布比获取更安全”

这里的安全是相对的,不是真正意义上的。 通过get提交的数据会显示在url上,页面会被浏览器缓存。 其他人在查看历史记录时会看到提交的数据,但post不会。 。 此外,获取提交的数据也可能引发CSRF攻击。

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

这一点还是很难理解的。 事实上,无论什么样的浏览器在发送POST时,都不包含Expect头,服务器自然不会发送Continue。 通过抓包发现,虽然会被分成两部分,但是body是在header之后立即发送的,不存在“等待服务器响应”的情况。

从另一个角度来看,TCP是传输层协议。 有人问你应用层协议中GET和POST有什么区别,你回答说在传输层发送数据时不同。 你确定别人不会抽烟吗?

参考:

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]