• 注册
当前位置:1313e > 默认分类 >正文

浅析HTTP GET与POST的区别

根据HTTP规范

(原理性)

      1、GET用于信息获取,而且应该是安全的和幂等的

            所谓安全的意味着该操作用于获取信息而非修改信息。换句话说:GET 请求一般不应产生副作用,即它仅仅是获取资源信息,就像数据库查询一样,不会修改或增加数据,不会影响资源的状态;

            幂等的意味着对同一URL的多个请求应该返回同样的结果。

            注意:在实际应用中,以上2条规定并没有这么严格。【比如新闻站点的头版不断更新,虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。】

      2、POST表示可能修改变服务器上的资源的请求

(表现性)

      1、GET请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连。如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。

      2、GET传送的数据量较小,POST传送的数据量较大。

      3、(在ASP.NET中)对于GET方式,服务器端用Request.QueryString获取变量的值;对于POST方式,服务器端用Request.Form获取提交的数据。

      4、POST的安全性要比GET的安全性高

            注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了。除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

      在FORM(表单)中,Method默认为"GET"。实质上,GET和POST只是发送机制不同,并不是一个取一个发!

 

 

转载于:https://www.cnblogs.com/swollaws/archive/2009/04/17/1437957.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录