get 和 post 的区别

2023-10-31

使用场景

  • GET请求一般用于向服务器请求数据
  • POST请求一般用于向服务器提交数据

请求参数的位置

  • GET请求通常将参数放在URL的 query 中。
  • POST 请求通常会将数据放在请求体(body)中。

GET请求通常将参数放在URL的 query 中。查询字符串位于URL的问号(?)后面,由一系列的"键=值"对组成,每对之间由&符号分隔。例如:

https://codereasy.com/search?query=puppies&sort=popularity

在上述例子中,"query"和"sort"是查询参数的键,"puppies"和"popularity"是它们的值。

POST 请求通常会将数据放在请求体(body)中。

POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 42

{
    "username": "testuser",
    "password": "testpass"
}

安全性

  • get请求的参数一般不安全,因为参数是拼接在url后面,暴露在地址栏中
  • post请求的参数一般比较安全,因为post请求的参数放在请求体中

这里的安全性主要是指,在传输过程中,get 请求的参数是暴露在 url 中,显得不安全;实际上,如果在传输过程中某个节点被劫持,post 请求参数也一样会暴露

能否被缓存

就是GET请求可以被缓存,而POST请求通常不会被缓存。

GET请求用于获取信息,它们是幂等的,也就是说,无论你发送多少次相同的GET请求,结果应该是一样的

举个例子,如果你正在浏览一个网页,你可能会多次请求同一张图片。如果浏览器可以缓存这张图片(基于GET请求的结果),那么在后续请求中就不需要再次从服务器获取图片,从而节省了带宽,加快了网页的加载速度。

POST请求可能更改服务器上的状态。比如,当你在一个网页上填写表单并提交时,浏览器可能会使用POST请求将表单数据发送到服务器。因为这种请求可能会改变服务器上的数据(例如,可能会在服务器上创建一个新的用户账户),所以缓存POST请求的响应通常是没有意义的。再比如,如果你提交一个订单,你不希望这个请求被缓存,因为你不希望再次提交同样的订单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

get 和 post 的区别 的相关文章

随机推荐