HTTP请求中POST与GET的区别

知道91 | 教程 | 2016-06-20 | 阅读:2037

在jQuery的Ajax请求中设置Type的时候我们一般会选择GET和POST,但是这两者之间的区别我们很少去关注,甚至基本就不知道是有什么区别,在混合着使用。今天这里知道91就好好分析下POST与GET的区别。

HTTP与服务器的交互模式其实有4种:PUT、DELETE、POST、GET,规范规定分别对应资源的增、删、改、查。而我们基本使用的都是POST和GET,忽略了PUT和DELETE。

HTTP请求GET讲解

根据HTTP规范,GET顾名思义是用来当做查询使用的。使用GET不会影响资源(数据库或其他数据存储)的改变,就是数据库的查询一样。GET请求在资源不变的情况下应该具有幂等性。

*幂等性:指相同的输入具有相同的输出。

HTTP请求POST讲解

POST按照规划应该是用来修改数据的,打个比方,如果一个论坛我们提交评论,就应该使用POST。

前面所讲到的是HTTP的规划,但是在实际的使用中很多人就没有按照这个规划去做。原因主要有这些:

  • 为了方便,GET使用更方便
  • 对于资源的增删改查,使用GET或POST都能完成相应的效果
  • 一些框架设计者并没有把URL抽象看待,所以导致很多框架只支持GET和POST。

HTTP中POST和GET表面上的一些差别

我们很多时候说GET是有长度限制的,而POST没有。其实这是不准确的,HTTP其实是没有限制GET的长度的,而是GET通过URL的形式来呈现,其长度取决于浏览器支持的URL地址长度。只是IE等一般浏览器都做了限制。对于POSTHTTP是没有限制的,而是在于服务器处理POST数据的能力。比如IIS6.0默认都ASP的限制是100KB。

POST与GET安全性比较

POST的安全性要比GET的安全性要高,GET是一种显示参数的传递,可能在浏览器上就可以发现GET请求的数据,如果是用户名和密码就很容易泄露,当然成熟的程序员不会这么做的。

POST与GET请求区别总结

POST是修改服务器数据,向服务器提交一条修改请求。GET是向服务器索取数据。POST被GET更加的安全。