前端学习:get与post的区别

get与post的区别

这个问题面试的时候经常会遇到,以下是我学习过程中的一个记录,可供参考

1、基于什么前提?

1.1 没有什么前提

如果什么前提都没有,不使用任何规范,只考虑http语法和理论上的http协议。
get和post没有任何区别

1.2 基于RFC规范前提

1)理论上:

get和post有相同语法,但语义不同,get用于获取数据,post用于发送数据。其他方面没有区别

2)实现上:

实现上http只是一个格式,需要有人去解析和使用这个格式,比如:各种浏览器就是这个格式的实现者,但不止浏览器可以作为实现者。在基于浏览器上才会有这些常见的区别:
区别
(1)get数据是在URL上是可见的,post在URL上是不可见的。
(2)get请求的长度是有限的(很多时候他要放在地址栏里面,地址栏里面无法存放那么多的数),post请求的长度是无限的。
(3)get请求的数据可以被收藏为标签,post请求到的数据没办法被收藏为标签。
(4)get请求后,如果按后退按钮、刷新按钮,它是没有影响的,但是post数据是会重新被提交的。
(5)get编码类型:application/x-www-form/url
post编码类型(他有很多种):
encodeapplication/x-www-form-urlencoded
multipart/form-data
(6)get的历史参数会被保留在浏览器中,而post不会
(7)get请求只允许ASCII编码,post请求是没有编码限制的,并且允许发二进制。
(8)get与post相比,get安全性较差,(也不是说post的安全性很好,只不过这两个相比,get安全性相对较差)

2、总结

以上是本人学习记录。get和post还有什么区别,欢迎大家补充。

猜你喜欢

转载自blog.csdn.net/TotoroChinchilla/article/details/125319604