GET请求与POST请求的区别

  HTTP协议定义了用户与服务器之间的交互方法,每种方法代表了不同的含义。最常见的就是GET方法和POST方法,这两种请求方法应用最广泛,基本上可以完成全部的Web服务。除了这两种,还有PUT方法、DELETE方法、HEAD方法、TRACE方法和OPTIONS方法。其中,PUT方法、DELETE方法、POST方法、GET方法,分别对应最基本的增、删、改、查资源的操作。可是,MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。其实,光GET方法和POST方法就可以完成这四种操作,本文介绍的就是这两种方法。


    GET

  GET是一种比较方便的请求方法。此种请求的数据会附在URL之后,用?分割URL和数据,参数之间以&相连。(参见:处理get请求中特殊字符的处理
  URL不存在长度上限的问题,HTTP协议规范没有对URL长度进行限制。因此,理论上URL可以是任意长度的,不过局限于不同浏览器与不同操作系统的支持,对URL附加了长度限制。例如:IE浏览器对URL长度的限制是2083字节。
  GET方法限制Form表单的数据集的值必须为ASCII字符。
  在日常浏览中,浏览器会保存历史记录与cookie。因此每次访问的URL会被保存,以GET方式发送的数据也会被保存。如果之后进行刷新或者请求相同的数据,浏览器会显示已经缓存的页面而不再向服务器发送请求。
  GET方法也是不安全的,因为它传输的数据都会显示在URL中,如果传输的是比较重要的数据,就会很容易泄露这些信息。由于GET请求的数据对用户是可见的。
  尽管如此,GET方法也是一种高效率简洁的请求方法,被广泛应用。

    POST

  POST方法是一种比较安全的请求方法,它将数据存放在了HTTP报文中的data区域中,对用户是不可见的,而且,POST方法支持整个ISO10646字符集。
  不同的浏览器与系统对报文中的data区域并没有限制,可以传输任意大小、长度的数据。
  浏览器不会缓存请求中的POST数据,因此,当把POST请求保存为书签时只会保存URL,不会保存请求的数据。


  每种请求方法都有优缺点,对于不同的场景应使用不同的请求方式。

    欢迎补充 !

相关文章: