在http请求协议中,有两种数据传送方式最为常见,那就是 get 和 post 请求方式。

GET

get主要是从服务器获取数据,通常我们提交一个表单,用get方式会这样写,form表单的method会用get:

<form action="http://www.baidu.com/" method="get">
  用户名:<input type="text" name="user"/>
  密码:<input type="password" name="password"/>
  <input type="submit" value="提交"/>
</form>

当我们输入用户名:yix, 密码:123456时,页面会跳转到这样一个网址:

由以上网址可以看到,get方式是将数据放在url里面来提交的,即数据会显示在url中,这样我们就可以看到用户名和密码等信息。显然,这种数据提交的方式安全性是很低的。并且,url的最大容量为10K左右,所以这种方式的容量也是比较低的。

但正是这种url存放了数据(url的参数)的机制,因此可以根据这些具体的参数得到一个网站的某篇文章,或者某个帖子的详细地址,而非这个网站的主页地址。

POST

post方式,是把本地数据提交给服务器,form表单的method会用post:

<form action="http://www.baidu.com/" method="post">
  用户名:<input type="text" name="user"/>
  密码:<input type="password" name="password"/>
  <input type="submit" value="提交"/>
</form>

我们再次输入用户名:yix, 密码:123456时,页面会跳转到这样一个网址:

由上面的网址我们可以看到,与get相比,post是把数据放在http content中,url除了首页地址看不到任何的其他数据,因此数据安全性大大的提高。而且,一般来说32位系统的机器http content的容量为2G左右。

GET和POST的区别

  1. 处理数据: get是从服务器获取数据,post是把本地数据提交给服务器。post请求不会被缓存,而get可以。

  2. 安全性:get会把数据显示在url中,而post则不会。因此post的安全性要get好很多。

  3. 容量性:get最多10K左右,post则为2G。所以post的容量要比get大很多。