了解历史
get
和post是HTTP与服务器交互的方式,
说到方式,其实总共有四种:put,delete,post,get。
他们的作用分别是对服务器资源的增,删,改,查。
所以,
get是获取数据,post是修改数据。
但是
,现在大家都不这么干了!
只用一个方式就可以做增删查减的操作。
区别分析
get
把请求的数据放在url上,即HTTP协议头上,其格式为:
以?分割URL和传输数据,参数之间以&相连。
数据如果是英文字母/数字,原样发送,
如果是空格,转换为+,
如果是中文/其他字符,则直接把字符串用BASE64加密,及“%”加上“字符串的16进制ASCII码”。
post
把数据放在HTTP的包体内(requrest body)。
get
提交的数据最大是2k(原则上url长度无限制,那么get提交的数据也没有限制咯?限制实际上取决于浏览器,(大多数)浏览器通常都会限制url长度在2K个字节,即使(大多数)服务器最多处理64K大小的url。也没有卵用。)。
post
理论上没有限制。实际上IIS4中最大量为80KB,IIS5中为100KB。
GET
产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
POST
产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
GET
在浏览器回退时是无害的,
POST
会再次提交请求。
GET
产生的URL地址可以被Bookmark,而
POST
不可以。
GET
请求会被浏览器主动cache,而
POST
不会,除非手动设置。
GET
请求只能进行url编码,而
POST
支持多种编码方式。
GET
请求参数会被完整保留在浏览器历史记录里,而
POST
中的参数不会被保留。
GET
只接受ASCII字符的参数的数据类型,而
POST
没有限制
那么
,post那么好为什么还用get?
get
效率高!