HTTP中GET和POST的区别

来源:互联网 发布:d3d11游戏编程 pdf 编辑:程序博客网 时间:2024/05/22 15:15

HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET、POST、PUT、DELETE。一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET、POST、PUT、DELETE分别对应于这个资源的查、改、增、删4个操作。也就是,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
1、根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
(1)安全
所谓安全就是指该操作用于信息获取而非修改信息。换句话说,GET请求一般不会产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
(2)幂等
所谓幂等就是指对于同一个URL的多个请求应该返回同样的结果。
2、根据HTTP规范,POST表示可能修改服务器上的资源请求。

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

总结:GET是向服务器方索取数据的一种请求,而POST是向服务器提交数据的一种请求,在FORM表单中,Method默认为GET,GET和POST只是发送机制不同,并不是一个取一个发。