GET和POST的区别?
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST没有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中
拓展知识:
HTTP的幂等性
HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用
简单解释一下:
- HTTP幂等方法,是指无论调用这个URL多少次,都不会有不同的结果的HTTP方法。
- 值得注意,幂等性指的是作用于结果而非资源本身。可能某个方法可能每次会得到不同的返回内容,但并不影响资源,这样的也满足幂等性。
- GET方法用于获取资源,没有副作用,所以是幂等的。这里的幂等是指调用一次或者多次并不会改变服务器资源的状态,而并不是每次返回的结果是一样的。
- POST所对创建的并不是资源本身,而是资源的接收者。两次相同的POST请求会创建两份资源,尽管资源本身相同,但是它们具有不同的URI,所以POST方法不具备幂等性
- PUT方法是创建或者更新资源本身,一次或者多次调用副作用是相同的,只是对本资源的更新或者修改,所以是幂等的
- DELETE方法用于删除资源,会将资源删除,调用一次或者多次,结果是一样的,所以是幂等的.