相对于POST的优点
- 更好的语义
- 对于那些不会改变服务器状态,只会获取数据的,应该用get请求,经get请求的数据会被缓存起来 ,如果需要多次请求同一数据的话(幂等行为),不会对服务器造成压力,它有助于提升性能。如果想破坏缓存最简单的方式是在 url 参数后加时间戳 “?timestamp=” + new Date().getTime()
- 对于少量数据而言,一个get请求往服务器只发送一个数据包,而一个post请求,至少要发送两个数据包,一个装载头信息,一个装载post正文,所以get方式会更快。
相对于POST的缺点
- 不安全,有可能会遭到CSRF(跨站请求伪造)攻击,当然了,post请求也能遭到CSRF攻击,只不过get请求相对更容易一些。
- IE浏览器下,get请求有长度限制,当请求的url加上参数的长度接近或超过2048个字符时,会导致请求的url被截断。
- post支持更多的编码类型且不对数据类型限制。
幂等行为:根据http协议,假如在不考虑注入错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者根本没有副作用,那么这些请求方法就能够被视作『幂等』的。get请求对服务器不产生其他副作用,所以具有幂等属性。