get 和post 的区别

在HTTP的协议中常见的方法:浏览器

请求方法(全部方法全为大写)有多种,各个方法的解释以下:
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI做为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留未来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
缓存

能够这样理解GET ,POST,PUT和DELETE分别表示查,改,增,删。从这个理解上能够很好理解GET和POST的区别,GET就是用于获取/查询资源信息,而POST则是用来更新资源信息。安全


  1. 根据HTTP规范,GET用于信息获取,因此是安全的和幂等的。服务器

       安全是指,因为是获取信息不会更改资源信息,因此是安全的。性能

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

   

   2.跟据HTTP规范,POST表示可能修改改变服务器上的资源的请求。加密


从表面上来区分GET和POST的区别:spa

  1. GET请求的数据会附在URL以后(就是把数据放置在HTTP协议头中),以?分割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包的包体中。操作系统

  2. URL和HTTP都没有对参数的长度进行限制,可是特定的浏览器及服务器对它的限制,IE对URL长度(限制是整个URL长度,而不单单是你的参数值数据长度)的限制是2083字节(2K+35)。对于其余浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操做系统的支持。因此在使用GET请求的时候可能会形成参数没有办法所有提交。资源

  3. 就安全性而言,经过GET提交数据,用户名和密码将明文出如今URL上,由于登陆页面有可能被浏览器缓存,其余人查看浏览器的历史纪录,那么别人就能够拿到 你的帐号和密码了,除此以外,使用GET提交数据还可能会形成Cross-site request forgery攻击。

  4. GET请求会出现乱码状况,并且很难解决。


总之,GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求,在表单中,默认的请求方法是GET.实质上,GET和POST只是发送机制不一样,并非一个取一个发!


以上是我的在前辈的博客和我的的经验总结而来,若有错误敬请提出!

相关文章
相关标签/搜索