http中get和post的区别

    一般在浏览器中输入网址访问资源都是通过get方式;在from提交中,可以通过method制定提交方式为get或者post,默认为get提交;http定义了与服务器交互的不同方法,最基本的方法有4钟:分别是get,post,put和delete。

    URL全称是资源描述符,我们可以这样认为,一个URL地址,她用于描述一个网络上的资源,而HTTP中的get,post,put,delete就对应着对这个资源的查,改,增,删4个操作。

    根据HTTP规范,get用于信息获取,而且应该是安全的(是指没有明显的对用户有影响的副作用(包括修改该资源的状态))和幂等的(一个方法不论进行多少次操作,结果都是一样的,比如,虽然put(把内容放到指定URL)和delete(删除某个URL代表的资源)都修改了资源内容,但多次操作,结果都是相同的,因此说,get是幂等的)。

    通常我们说post的安全性要比get的安全性高(这里提到的安全性和上面get提到的安全是不同的概念。上面get中的安全的含义仅仅是不作数据修改,而这里安全的含义是真正的security的含义)。比如,通过get提交数据,用户名和密码将明文出现在URL上,比如有一个常见的url:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD,通过这个url我们就知道该用户的用户名是:hyddd,密码是idontknow。但是就因为这个原因说 POST 比 GET 安全是错的,因为POST和GET都是明文传输,用httpfox等插件,或者像WireShark 等类似工具就能观察到。

    post和get的差别其实是很大的,语义上,get是获取指定URL的资源,是读操作,重要的一点是不论对某个资源get多少次,它的状态是不会改变的,在这个意义上,我们说get是安全的。因为get是安全的,所以get返回的内容可以被浏览器,cache服务器缓存起来。 而post的语义是对指定资源追加或者添加数据,所以是并不安全的,每次提交的post,参与的代码都会认为这个操作会修改操作对象资源的状态。于是,浏览器在你按下F5的时候就会跳出确认框,缓存服务器不会缓存post请求返回的内容。

    所以,做一个总结,http中get和post的区别:

    (1)get用于信息的获取,是安全的和幂等的;而post用于对信息的添加或者追加,是不安全的,也是不幂等的;、

    (2)get返回的内容可以被浏览器你和cache服务器缓存下来;而post返回的内容不会被缓存下来;

    (3)下面比较了get和post方法的一些区别

 getpost
后退、刷新按钮无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签可收藏为书签不可收藏为书签
缓存可以被缓存不可以被缓存
编码类型application/x-www-form-urlencoded为二进制数据使用的多重编码
历史参数保留在浏览器历史中参数不会保存在浏览器历史中
对数据长度的限制是的,当发送数据时,get方法向URL添加数据;URL的长度是受限制的。(最大长度为2048)无限制
对数据类型的限制只允许ASCII码没有限制,也允许二进制数据
安全性与post相比,get的安全性较差,因为所发送的数据时URL的一部分。在发送密码或者其他敏感信息时绝对不要使用getpost比get更安全,因为参数不会被保存在浏览器历史或web服务器日志中。
可见性数据在YRL中对所有人都是可见的数据不会显示在URL中

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值