1.从HTTP标准来看Get和Post
get:get用于标识获取资源而用的,他有两种特性
1.产生的结果是幂等的,就是说同一个url和同样的get参数,呈现给用户都是同样的结果,例如说你在淘宝看到了一篇好东西,分享给你的朋友,他后面一般会添加一个唯一标识该商品的参数,如果你好友打开后看到的不是该商品,这也是不符合原来设计的初衷。
2.是安全的,这里的安全是针对服务端而言,get不会引起数据的变化,例如说对数据库的增删改。
post:根据HTTP规范,Post是有可能引起数据的变化,例如说论坛说有人要发表文章,一般是通过填写表单,通过POST传递到服务端,服务端处理数据之后,进行文章的更新。
2.从应用角度来看
get
1.get请求参数放在URL后面,格式是URL?key1=value1&key2=value2...,可以在链接看到参数
2.理论上HTTP并没有对URL长度进行限制,也就是对get参数没有长度限制,但是一般用户打开链接都是通过浏览器,因此会受到浏览器或者操作系统限制长度,比较常见的限制长度是1024字节。
post
1.post请求数据会放在HTTP包中,保密性相对安全。
2.HTTP标准也没有对POST数据进行限制,但是会受到服务端的长度限制,如处理的程序(PHP),服务器引擎(Apache)。
3.总结
get适合于查询区分某些特定数据的页面,如商品展示。
由于post的HTTP标准,因此更适合做数据的改变,而且由于应用角度上的数据传递方式,更适合用于登录注册功能页,因为不会被别人明眼看到数据(其实就算用POST,如果用心搞你,可以通过捉包去获取数据,也不是说安全挺多的)。