在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则是用来更新资源信息。
根据HTTP规范,GET用于信息获取,所以是安全的和幂等的。
安全是指,由于是获取信息不会更改资源信息,所以是安全的。
幂等的意味着对同一URL的多个请求应该返回同样的结果。
2.跟据HTTP规范,POST表示可能修改改变服务器上的资源的请求。
从表面上来区分GET和POST的区别:
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包的包体中。
URL和HTTP都没有对参数的长度进行限制,但是特定的浏览器及服务器对它的限制,IE对URL长度(限制是整个URL长度,而不仅仅是你的参数值数据长度)的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。所以在使用GET请求的时候可能会造成参数没有办法全部提交。
就安全性而言,通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,其他人查看浏览器的历史纪录,那么别人就可以拿到 你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
GET请求会出现乱码情况,而且很难解决。
总之,GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求,在表单中,默认的请求方法是GET.实质上,GET和POST只是发送机制不同,并不是一个取一个发!
以上是个人在前辈的博客和个人的经验总结而来,如有错误敬请提出!