get与post的区别
- 两者的请求格式
- http请求格式
说明:- 第一行,包括:请求方法,请求url,http版本(可略)
- 第二行,头部信息,可以为0个或者多个,说明服务器要使用的附加信息
- 第三行,空行,作为头部与报文实体分割
- 第四行,报文实体的主体部分,任意数据组成的数据块
- get请求实例
- post请求实例
- http请求格式
- 两者对比
- 参数传输方式以及编码格式
- get,请求的数据以querystring的格式附加在url后面。编码格式采用ASCII
- post,请求数据放在请求body中,编码格式为unicode
- 传输数据大小
- get,url长度以及数据大小有限制
- post,由于不是url传值,理论上无限制
ps:http规范中,没有对url长度以及传输的数据大小进行限制,出现上述区别主要是因为浏览器以及服务器。实际中,服务器也会对post提交的数据进行限制
- 产生的tcp数据包
- get,产生一个,浏览器将http header以及data发送出去,服务器响应200
- post,产生两个,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200
ps:并非所有浏览器的post都会发送两次包,firefox就发送一次
- 安全性
- 从是否修改服务器资源上说
- get,不修改服务器资源
- post,修改服务器资源
- 从参数而言
- get,直接暴露参数
- post,隐藏参数
ps:最终的安全与否,视使用情况。例如http中定义get的方式用于读取资源,但实际开发中却使用了get的方式去修改资源,这样的情况,get被认为不安全对get而言是不公平的~
- 从是否修改服务器资源上说
- 参数传输方式以及编码格式