« 回到主页

GET和POST请求

1 HTTP请求的类型

HTTP请求的最基本的方法有4种,分别是PUT、DELETE、POST、GET,对应着对资源的增、删、改、查4个操作,但对资源的增、删、改、查操作,其实都可以通过GET和POST完成,不需要用到PUT和DELETE。

2 GET和POST的区别

GETPOST
数据传递方式数据会附在URL之后,即放置在HTTP包的包头中,以?分割URL和数据,参数之间以&相连数据会放置在HTTP包的包体中
对数据大小的限制特定的浏览器和服务器对GET请求的URL的长度有限制,最多只能是1024字节由于不是URL传值,理论上对URL的长度是不会受限制的,但实际上各个服务器会规定对POST提交数据大小进行限制,如Apache、IIS都有各自的配置
对数据类型的限制只允许ASCII字符没有限制,也允许二进制数据
安全性数据会暴露在地址栏中,安全性低数据不会暴露在地址栏中,安全性高
缓存能被缓存不能缓存

3 GET和POST的选择

GET和POST方法是为不同的目的而设计的,两者的不同也在于其使用目的。 GET一般用于获取/查询服务器上的资源信息,它会检索要显示在页面中的数据,数据不会在服务器上被更改,因此重新请求相同数据时会得到相同的结果。因此,为了使GET请求更有效率,浏览器会缓存GET请求的执行结果,如果同样的GET请求再次发出,浏览器就会显示缓存的结果而不是重新发起GET请求。 POST一般用于更新服务器上的资源信息,若要更改保存在服务器上的数据,从两个同样的POST请求返回的结果或许会完全不同,这是由于第一个调用已经更新了服务器上的数据。因此,POST请求通常会从服务器上获取响应而不是使用前一个响应的缓存。 因此,不要根据需要传递的数据的大小来决定是要选择GET还是POST,而应该根据使用目的在两者间作出选择:如果是要检索服务器上的数据,则使用GET(注意:由于GET的缓存问题,如果要检索的数据会随时间的改变而改变,则需要在GET请求中添加一个当前时间参数,从而避免使用前一个响应的缓存);如果是要向服务器发送数据,则使用POST。

« 回到主页