深入聊聊 GET 和 POST 的区别

GET 和 POST 有什么区别?

GET 的语义是从服务器上获取资源,比如文本、图片、页面等。参数一般写在 URL 中,URL 只支持 ASCII ,所以 GET 的参数只能是 ASCII 字符。浏览器对 URL 的长度有限制。

POST 的语义是根据请求负荷(body)对指定的资源做出处理。请求的参数写在报文 body 中,可以是任意格式,浏览器对 body 的大小不作限制

GET 和 POST 的安全性和幂等性

安全: 指请求方法不会对服务器的资源造成破坏
幂等: 多次执行相同的操作,结果都相同

从 RFC 规范的语义上看:

  • GET 方法是安全且幂等的,浏览器可以对 GET 请求的数据做缓存
  • POST 方法会修改服务器的资源且会根据参数的不同做出不同的操作,所以不安全也不幂等。大部分情况下不能够被缓存