get和post的区别?
1)get请求是通过给url添加查询字符串发送请求参数,不安全;post请求是通过请求体发送的,安全性比较高。
2)get在浏览器回退时不用发送请求,而post会再次提交请求。
3)get请求参数的url地址可以被bookmark(添加为书签),而Post不可以。
4)get请求会被浏览器自动cache,post请求不会,除非手动设置。
5)get请求只能进行url编码,而post支持多种编码方式。
6)get请求在url中传送的参数是有长度限制的(大概255字节),而post没有限制。
其实post和get在本质上没有区别,都是TCP链接,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
get和post最大的区别:
get产生了一TCP数据包,post产生两个TCP数据包。
对于get请求,浏览器会报http header和data一并发送出去,服务器响应200返回数据;
而对于post请求,浏览器会先发送header,服务器响应100continue,浏览器再发送data,服务器响应200返回数据。
因此有人认为可以将post请求换位get来优化网站的性能,其实是不可以的。原因如下:
1)get和post都有自己的语义,不能混用。
2)网络环境好的时候,发送一次包和发送两次包事件的差别基本可以无视,而在网络环境差的情况下,两次包的TCP在验证数据包的完整性上,有非常大的优势。
3)并不是所有浏览器都会在post中发送两次包,firefox就只发送一次。