GET和POST的区别(整理汇总)
get和post是http请求常用的方法
http是什么?
http是一种超文本传输协议,建立在TCP上的无状态连接。
设计目的:是保证客户端与服务端的通信,
1.一种超文本传输协议;
2. 建立在TCP上的无状态连接;
3. 设计目的是为了保证客户端与服务短的通信;
4. 客户端与服务端之间的请求-应答协议;
5. 请求方式有:GET、POST、PUT、DELETE,常用方法为GET、POST。
GET方法
1.参数放在Url中,以键值对key=value方式存在,多个参数之间用&拼接
例: http://ip:port/getTaskInfoList?gmtCreateStart=2018-12-01&gmtCreateEnd=2018-12-09&pageSize=2&pageNo=1;
2、GET请求可被缓存;
3、GET请求保留在浏览器历史记录中;
4、GET请求可以被收藏为书签;
5、GET请求不应再处理敏感参数时使用;
6、GET请求有长度限制;
7、GET请求只应当用于取回数据;
8、GET请求header和data一起发送传输。
POST方法
1、参数放在请求消息体中;
2、POST请求不会被缓存;
3、POST请求不会被保存在浏览器历史记录中;
4、POST请求不能被收藏为标签;
5、POST请求对数据长度无要求;
6、POST请求先发送header,浏览器返回100,浏览器再发送data。
GET与POST比较
项目 | GET | POST |
---|---|---|
后退按钮 | 无害 | 数据会被重新提交 |
书签 | 可被收藏为书签 | 不可被收藏为书签 |
缓存 | 能被缓存 | 不能被缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中 | 参数不会保留在浏览器历史中 |
对数据长度的限制 | URL的最大长度是2048个字符 | 无限制 |
数据类型限制 | 只允许ASCII字符 | 无限制 |
安全性 | 安全性低 | 安全性高 |
可见性 | 数据在URL中对所有人可见 | 数据不在URL中 |
总结
GET和POST请求方式有其自身的语义,不可混用。
通用信息的查询可以用GET请求,涉及到敏感信息参数的传递要用POST请求。
对参数完整性有要求的请求,用POST请求,因为POST请求时参数放到对应的消息请求体中,有固定的格式规范,对数据包的完整性校验,有比较大的优势。