get和post的区别

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

Get方法

查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

/test/demo.js?name="Tom"&password='123456'

Post方法

查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:

POST /test/demo.js HTTP/1.1
Host: localhost:3000
name="Tom"&password="123456"

区别

1.最直观的就是语义上的区别:

  • get用于获取数据,post用于提交数据。

2.get和post的长度的限制:

  • get是通过url提交数据,因此get可提交的数据量就跟url所能达到的最大长度有直接关系。
  • 实际上HTTP协议对url长度是没有限制的;限制url长度大多数是浏览器或者服务器的配置参数
  • 同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小限制。

3.get和post的安全性:

  • GET是通过URL方式请求,可以直接看到,明文传输。
  • POST是通过请求header请求,可以通过开发者工具或者抓包看到,同样也是明文的。
  • GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。

4.get幂等,post不幂等:

幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。

引入幂等主要是为了处理同一个请求重复发送的情况,比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。这也是浏览器在后退/刷新时遇到POST会给用户提示的原因:POST语义不是幂等的,重复请求可能会带来意想不到的后果。

推荐阅读更多精彩内容