post请求:向指定资源提交数据进行处理请求。
get请求:通过url来传递数据。
共同点:两者都是http协议规定的请求方式;本质上都是tcp链接。
既然两者有共同点,那么也就会有区别:
1,GET请求的数据会暴露在地址栏中,而POST请求则不会。
GET请求:请求的数据会附加在URL之后,以分割URL和传输数据,多个参数用&连接。URL的编 码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:传输数据时,POST请求会把请求的数据放置在HTTP请求包的包体中。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
2,Get请求传输数据量小,Post请求传输数据量大。
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
3,POST的安全性比GET的高。
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。
4,传输数据的侧重点。
GET传输数据的侧重点在于从服务器上获取数据。
POST传输数据的侧重点在于向符文武器发送数据。
5,请求方式
GET请求时,浏览器会把http的header和data一并发送,服务器响应200.
POST请求时,浏览器先发送http的header,服务器响应后再次发送data,两次完成后,服务器响应200。