针对GET& POST的掌握能够说是迷迷糊糊的,今天特地拿出来好好整理一下,便于掌握理解。html
在服务器端都有一个用来标识资源位置的符号,被称为统一资源标识(URL)。web
URI有两种形式。分别为URL何URN. 数据库
URL浏览器
统一资源定位符(URL,英语UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。 缓存
URL的格式由下列三部分组成: (协议)://(主机名):(端口号) / (文件路径)/(文件名) 安全
第一部分是协议(或称为服务方式);服务器
第二部分是存有该资源的主机IP地址(有时也包括端口号);网络
第三部分是主机资源的具体地址。,如目录和文件名等。架构
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺乏的,第三部分有时能够省略。如今几乎全部的URI都是URL。框架
URN
统一资源名称 (Uniform Resource Name, URN),惟一标识一个实体的标识符,可是不能给出实体的位置。系统能够先在本地寻找一个实体,在它试着在Web上找到该实体以前。它也容许Web位置改变,然而这个实体却仍是可以被找到。URN 能够提供一种机制,用于查找和检索定义特定命名空间的架构文件。尽管普通的 URL 能够提供相似的功能,可是在这方面,URN 更增强大而且更容易管理,由于 URN 能够引用多个 URL。与 URL 不一样,URN 与地址无关。URN 和 URL 都属于 URI。URN在web中主要应用是下拉菜单的制做。使用URN时下拉菜单的易扩展性将会获得很大的提升。
HTTP
Http定义了与服务器交互的不一样方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,咱们能够这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操做。到这里,你们应该有个大概的了解了,GET通常用于获取/查询资源信息,而POST通常用于更新资源信息。
1.根据HTTP规范,GET用于信息获取,并且应该是安全的和幂等的。
(1).所谓安全的意味着该操做用于获取信息而非修改信息。换句话说,GET 请求通常不该产生反作用。就是说,它仅仅是获取资源信息,就像数据库查询同样,不会修改,增长数据,不会影响资源的状态。
* 注意:这里安全的含义仅仅是指是非修改信息。
(2).幂等的意味着对同一URL的多个请求应该返回一样的结果。
2.根据HTTP规范,POST表示可能修改变服务器上的资源的请求。继续引用上面的例子:仍是新闻以网站为例,读者对新闻发表本身的评论应该经过POST实现,由于在评论提交后站点的资源已经不一样了,或者说资源被修改了。
对于HTTP原理性的东西,人们在实际项目中并无遵照:
1.不少人贪方便,更新资源时用了GET,由于用POST必需要到FORM(表单),这样会麻烦一点。
2.对资源的增,删,改,查操做,其实均可以经过GET/POST完成,不须要用到PUT和DELETE。
3.另一个是,早期的Web MVC框架设计者们并无有意识地将URL看成抽象的资源来看待和设计,因此致使一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。
GET & POST区别
1.请求数据的位置,
GET 请求会把请求的数据放在url的后面用?分割,提交的每一项使用&来分割,也就是将请求的数据放在请求的头部。若是是中文或者其余字符使用BASE64来加密;而POST借助form将请求的数据放在请求的请求体。
2.长度的限制
针对这个长度的限制,是很是有争议的说法。HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL长度上的限制,有两方面的缘由形成:
a.浏览器。听说早期的浏览器会对URL长度作限制。听说IE对URL长度会限制在2048个字符内(统一承认)
b.服务器。URL长了,对服务器处理也是一种负担。
3.安全性
因为GET是将参数放在url的后面,直接暴露出来,因此会相对不安全。这是由于使用GET的数据可能会被缓存起来,这样就会致使所谓的不安全。知乎中总结的一些使用GET的场景:
- 请求中的URL能够被手动输入
【参考】
1.http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html