POST和GET请求的区别
HTTP协议定义了与服务器交互的不同方法,最基本的方法有四种,GET,POST,PUT,DELETE。服务的URL地址,用以描述相应的网络资源,而这几种与服务器打交道的方法,实际上就对应了对网络资源的增、删、改、查。
本篇主要讲述面试过程经常被提问的POST与GET的区别
一、请求方式
GET请求:请求的数据会附在URL后面,以?号分隔URL和传输数据,多个参数用&作分隔符,URL的编码格式采用的是ASCII编码,而不是UNICODE编码,如此,所有非ASCII编码的字符都需要经过编码后进行传输。
POST请求:请求的数据被放置在HTTP请求包的包体中。
即GET请求的数据会暴露在地址栏中,而POST请求的数据由于在请求体中,故不会直接对用户和游客暴露,如此便涉及到第二点安全性的区别。
二、安全性
POST的安全性比GET高。假设在一次登录请求中,通过GET请求,用户名和密码都会暴露在URL上,因为登录页面有浏览器缓存和页面历史记录等原因,此时的用户名和密码就极有可能被恶意用户拿到,故涉及到机密性较高的数据,POST的安全性是GET无法比拟的。
三、传输数据的大小
在HTTP规范中,没有对URL的长度和数据传输的大小进行限制。但在实际应用中,特定的浏览器和服务器对URL的长度是有一定限制的。因此使用GET请求,会有URL长度方面的限制。
对于POST请求,由于不是URL传值,所以不存在URL长度方面的限制,这是其相比GET优势所在,可以传输较大的数据。但在实际应用中,各个服务器都会根据实际情况对POST传输的数据大小进行不同程度的限制。