HTTP请求的GET与POST方式的区别
一、两者的各自特点:
- 使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器,有以下特点:
- GET请求能够被缓存
- GET请求会保存在浏览器的浏览记录中
- 以GET请求的URL能够保存为浏览器书签
- GET请求有长度限制,最多只能1024字节
- GET请求主要用以获取数据
- 可能不是很安全,请求数据会暴露在url中
- get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用"?"连接,而各个变量之间使用"&"连接;
- 使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器,有以下特点:
- POST请求不能被缓存下来
- POST请求不会保存在浏览器浏览记录中
- 以POST请求的URL无法保存为浏览器书签
- POST请求没有长度限制
- post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL;
二、深层理解两者:
本质上来说:get和post本质上都是基于TCP/IP的HTTP协议的请求方式,也就是说这两者本质上TCP连接。此外,要注意:GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
简单来说,get方法只需要进行一次传输即可,而post方法需要两次,先与远程服务器打通,然后再进行传输,而get方法可以直接传输。