一、概述
GET和POST是HTTP请求的两种基本的方法,最直观的区别在与,GET请求把参数包含在URL中,而POST通过request body传参。
HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
HTTP底层是基于TCP/IP,也可以是说GET/POST也是基础TCP/IP协议。
二、区别
- GET在浏览器回退是无害的,而POST会再次提交请求。
- GET可以被收藏为书签,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行URL编码,而post支持多种编码。
- GET的请求参数会被浏览器完整保存,而POST不会被保留。
- GET在URL中传送的长度是有限制的(2K),而POST没有。
- 对参数的数据类型,GET只接受ASSIC字符,而POST不受限制。
- GET比POST更不安全,因为参数会直接暴露在URL中,所以不能用来传递敏感信息。
- GET产生一个TCP数据包,而POST产生两个数据包。
- 对于GET请求,浏览器会把http header 和data 一起发送,服务器响应200。
小贴士:
POST请求,会先发送header,当服务器返回100 continue,浏览器才会发送data,服务器响应200OK,看起来GET比POST更有效,但是在网络环境好的情况下,发送一次数据包跟两次数据包的时间基本无差,而在网络环境差的时候,发送两次数据包,在验证数据包完整性上,有很大的优点。并不是所有的浏览器的POST都发送两次,火狐只有一次。