HTTP请求,最初设定了八种方法:
1.OPTIONS 返回服务器所支持的请求方法
2.GET 向服务器获取指定资源
3.HEAD 与GET一致,只不过响应体不返回,只返回响应头
4.POST 向服务器提交数据,数据放在请求体里
5.PUT 与POST相似,只是具有幂等特性,一般用于更新
6.DELETE 删除服务器指定资源
7.TRACE 回显服务器端收到的请求,测试的时候会用到这个
8.CONNECT 用于SSL隧道的基于代理的请求
GET 和 POST 只是 HTTP 协议中两种请求方式,而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别。
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
**
get和post的区别:
**
首先先引入副作用和幂等的概念。
副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
幂等指发送 M 和 N 次请求(两者不相同且都大于 1),服务器上资源的状态一致,比如注册 10 个和 11 个帐号是不幂等的,对文章进行更改 10 次和 11 次是幂等的。因为前者是多了一个账号(资源),后者只是更新同一个资源。
在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字。Post 多用于副作用,不幂等的场景,例如注册。
在技术上说:
Get 请求能缓存,Post 不能
Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里(当然你想写到 body 里也是可以的),且会被浏览器保存历史纪录。Post 不会,但是在抓包的情况下都是一样的。
URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
Post 支持更多的编码类型且不对数据类型限制