说到GET和POST,就不得不提HTTP协议,因为浏览器和服务器的交互是通过HTTP协议执行的,而GET和POST也是HTTP协议中的两种方法。

HTTP全称为Hyper Text Transfer Protocol,中文翻译为超文本传输协议,目的是保证浏览器与服务器之间的通信。HTTP的工作方式是客户端与服务器之间的请求-应答协议。

HTTP协议中定义了浏览器和服务器进行交互的不同方法,基本方法有4种,分别是GET,POST,PUT,DELETE。这四种方法可以理解为,对服务器资源的查,改,增,删。

  1. GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。
  2. POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据
  3. PUT:英文含义是放置,也就是向服务器新添加数据,就是所谓的增加
  4. DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。

get、post区别

  • Get是不安全的,因为在传输过程,数据被放在请求的URL中;
  • Post的所有操作对用户来说都是不可见的。但是这种做法也不是绝对的,大部分人的做法也是按照上面的说法来的,但是也可以在get请求加上 request body,给 post请求带上URL 参数。
  • Get请求提交的url中的数据最多只能是2048字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。Post请求则没有大小限制。
  • Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
  • Get执行效率却比Post方法好。Get是form提交的默认方法。
  • GET产生一个TCP数据包;POST产生两个TCP数据包。
  • 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
  • 对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

什么时候使用get和post:

若符合下列任一情况,则用POST方法:

请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
若使用GET方法,则表单上收集的数据可能让URL过长。
要传送的数据不是采用7位的ASCII编码。

若符合下列任一情况,则用GET方法:

请求是为了查找资源,HTML表单数据仅用来帮助搜索。 请求结果无持续性的副作用。
收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。