在web开发中最常用的http请求方式为get和post,但是它们之间的区别总是很模糊,没有比较明确的区分,似乎它们是可以互相替换的,只是请求格式不同。周末,通过在网上查阅资料,做了一个简单总结。
1标准答案
1、get是指从指定的资源请求数据,post则是向指定的资源提交数据。
2、getURL可见,postURL不可见。
3、get的参数时通过URL中传递的,post参数是通过request body传递。
4、get在浏览器回退时是无害的,而post会再次提交请求。
5、get请求可被缓存,post请求不会被缓存。
6、get请求会被保存浏览器的历史记录中,post不会被保存。
7、get请求有长度限制,post没有长度限制。
8、get比post更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
2深入答案
get产生一个TCP数据包,post产生两个TCP数据包。(对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok。)