GET请求和POST请求是HTTP请求最常见的2种方式,一般情况下,从服务器拿资源使用GET,把资源给服务器使用POST,下面来介绍一下GET和POST的区别。
GET请求
我们在使用GET请求,如果有参数要传给服务器,那么参数就会被携带在URL后面,隐私性较差,并且有长度限制,不能超过2kb。URL与携带的参数以?进行分割,多个参数之间使用&隔开,参数中有敏感信息时不要使用GET。百度搜索就是GET方式。
URL后面会携带请求参数。抓包也可以看见,只不过参数进行了编码。
总结一下GET请求的特征如下
- GET 请求可被缓存
- GET 请求保留在浏览器历史记录中
- GET 请求可被收藏为书签
- GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据
POST请求
使用POST相对于GET更安全,因为参数不会再URL后面,地址栏中不会进行显示,而会放在请求体中,一般情况下,登录界面都是POST,我们选择一个登录页面进行抓包查看。我选择的MOOC平台的登录界面进行抓包查看。
发现使用的确实是POST,但是我们确找不到请求参数,实际上,请求体应该是和请求头在一起的,以空行进行分割,但是 geogle进行了处理,把请求体单独拿了出来,在POST中点击Payload进行查看。
在POST中确实看见了请求参数,也是经过了加密的。
总结一下GET请求的特征如下
- POST 请求不会被缓存
- POST 请求不会保留在浏览器历史记录中
- POST 不能被收藏为书签
- POST 请求对数据长度没有要求
最后说明一下,GET和POST的使用不需要特意去记,只需要知道POST和GET的大概区别就行,在很多情况下,HTML文件中的标签已经有了默认的请求方法,例如img,css,js引入都是GET方法,我们从游览器地址栏访问也是GET,如果希望请求参数不被用户看见,或者有敏感信息时使用POST就行了。例如表单。