post请求主要包含两部分: header 和 body
主要的请求头有下面两个
content-type:描述请求(body)的数据类型
content-length:描述数据的长度
(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的 *** 作
(6)get请求的是静态资源,则会缓存,如果是数据,则不会缓存
1.post请求包含更多的请求头
因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。
2.最重要的一条,post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应
也就是说,目测get的总耗是post的2/3左右,这个口说无凭,网上已经有网友进行过测试。
(1)http协议并未规定get和post的长度限制
(2)get的最大长度限制是因为浏览器和web服务器限制了URL的长度
(3)不同的浏览器和web服务器,限制的最大长度不一样
(4)要支持IE,则最大长度为2083byte,若支持Chrome,则最大长度8182byte
发起POST请求,控制台反馈405 Method Not Allowed405错误提示如图:uni.request()默认Content-Type 为"application/json",设置前后的Content-Type分别见下图:
问题四发生在Vue+axios项目中,项目中使用 get请求一切正常 ,使用POST请求却一直提示参数格式不正确,一开始还以为是和【问题三】一样是由于Content-Type配置不正确导致,结果将Content-Type换了个 遍 也没有解决问题。最终依靠万能度娘解决
上面描述的4个有关POST请求的问题都是近期在前后端项目对接中真实遇到的,趁此机会对其作了一个总结,文中虽然没有深入去讲解其错误原因和解决原理,但都给出了相应的文章链接。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)