浅谈get和post请求方式

浅谈get和post请求

前几天和小伙伴交流的时候我忽然聊到面试的话题,聊到了客户端请求服务器数据的几种方式。我们现在就来说说这几种方式以及它们的主要区别。

基本的几种请求方式

getpostputdelete四种方式是我们之前的几种方式,俗称增删改查。

但是,这四个功能只需要一个请求方式即可全部实现,那就是post请求。

所以我们现在主要使用get方法请求数据,post方法修改数据,哈哈哈。

好了,话不多说,其实我主要想说的是这两种请求方式的区别。

区别

首先,我们知道的是这两个方式的名字不同。手动滑稽。😂

  1. 数据位置

get请求是把请求的数据放在url上以?分割url参数之间使用&相连接,而post请求是把请求的数据放在HTTP的请求体(Request Body)中。

  1. 编码方式

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

  1. 数据长度

get请求的数据最大2k,原则上说url是没有限制的,但是浏览器本身会限制这个url,通常浏览器都会将url控制在长度为2k个字节。

  1. bookmark(书签标记)

get请求产生的url地址是可以被bookmark,但是post不行.

  1. tcp

在请求过程中,get会产生一个tcp包,post请求会产生两个tcp包。(火狐浏览器只发送一个包)

get:浏览器会将请求头和data一起发送出去,服务器响应200 ok(返回数据);

post:浏览器先发送请求头 (request header),服务器响应100 continue,浏览器会再发送请求体(其中包含着数据),服务器响应200 ok (返回数据)

  1. 安全

post请求更加安全一些,get请求会将数据直接暴露在url

  1. 缓存

get请求的数据会被浏览器主动缓存(cache)起来(历史记录),而post请求不会,除非你手动设置。

  1. 回退

get请求在浏览器回退的时候是无害的,而post会再次发送请求。