GET 请求和 POST 请求

浅析HTTP中请求GET/POST - 知乎 (zhihu.com)

什么是GET

GET:从服务器请求数据后获取服务端数据

常见发起get请求的方式:

  • URL、src/href、表单(form)

格式:

index.php?userName=jack&password=123
语法(key=value&key=value): userName=jack&password=123 叫做查询字符串

特点:

参数名与参数值之间没有空格

参数值不需要单双引号包括

具体情况使用GET方法:

  • 1.客户端和服务端的交互像是一个提问(如查询操作、搜索操作、读操作)
  • 2.请求是为了查找资源,HTML表单数据仅用来帮助搜索
  • 3.请求结果无持续性的副作用(如不会进行搜索,属于一次性的)
  • 4.收集的数据及HTML表单内的输入字符按名称的总长不超过1024个字符
  • 5.获取参数或者短小的内容时用GET

GET提交数据特点:

  • 1.get方式在url后拼接参数,只能以文本的形式传递参数
  • 2.传递的数据量小,不同浏览器有差异
  • 3.安全性低,还会将信息显示在地址栏
  • 4.速度快,通常用于对安全性不高的请求

什么是POST

POST:发送、提交。向服务器发送/提交要处理的数据。

格式:

POST /test/demo_form.asp HTTP/1.1
Host: http://w3schools.com
name1=value1&name2=value2

具体的情况使用POST方法:

  • 1.交互是一个命令或订单(order),比提问包含更多信息
  • 2.用户改变了服务器端的资源并被用户察觉,例如订阅某项服务
  • 3.用户需要对交互产生的结果负责
  • 4.请求的结果有持续的副作用。例如:数据库内添加新的数据行
  • 5.GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制,所以使用POST更佳
  • 6.获取大段的内容用POST,通常表单用POST方式提交数据,表单的method必须设置为POST
  • 7.对数据有变更的请求(增删)用post(比如发帖,回复的form用的时POST)

二者区别

GET在浏览器回退时是无害的,而POST会再次提交请求

GET产生的URL地址可以被Bookmark(收藏),而POST不可以

GET请求会被浏览器主动cache,而POST不会,除非主动设置

GET请求只能进行url编码,而POST支持多种编码方式

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

GET请求在URL中传送的参数是有长度限制的(浏览器),而POST没有

对于参数的数据类型,GET只接受ASCII字符,而POST没有限制

GET参数通过URL传递,POST放在Request body中

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

 GET 请求和 POST 请求_第1张图片

你可能感兴趣的:(计算机网络)