1,直观的区别是一般get把参数放在url上,post放在请求体中
但是这不是绝对的,写项目的时候,明明要求是post请求,但是我把参数放在body里没传过去,放在url参数上反而传递成功了,很懵,就搜搜万能的网友有什么见解,
实际上get和post的本质没区别
1,get和post都是http协议(基于tcp/ip关于数据如何在万维网中通讯的协议)中的两种请求方式
2,get和post都是tcp连接,所以他们所能做的事是一样的,get可以加request body,post可以带上URL参数,技术上是可以的
3,在万维网世界里,tcp就像是传输数据的汽车,http协议就像是交通规则
使用get的时候,要求把传输的数据放在车顶(url)以方便记录。如果是post请求,就把货物放在车厢里,但是也可以在发送get的时候将参数放在车厢里
但是大多数浏览器会限制URL的长度,不同浏览器的处理方式也不同,在发送get请求的时候有些服务器不会读取放在request body里的数据。
其他区别:
1,get 产生一个tcp数据包,POST会产生2个tcp数据包
get请求的时候会把header和data一起发送出去
post会先发送header,服务器响应100,浏览器再发送data,服务器响应200返回数据(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)
2,get的地址可以被浏览器Bookdown,参数直接暴露在地址栏,不安全,post不会
3,get的回退是无害的,post会再次发送请求
4,get请求会被浏览器主动cache,post不会,除非手动设置
5,get请求只能url编码,而post支持多种编码方式
6,get请求在url的参数会被完整的保留在浏览器的历史记录里
7,get请求在url传递的参数有长度大小的限制
8,对于参数的数据类型,get只接受ASCLL字符,post没限制
get和post两种基本请求方法的区别
最新推荐文章于 2024-03-17 02:03:21 发布