1.传送方式:get通过地址栏传输,post通过报文传输。

2.post请求无长度限制(至少是理论上的) ;get有长度限制,最长不超过2048字节(1024个汉字)

3.Get/post 请求报文上的区别

get 和post只是 HTTP 协议中两种请求方式(异曲同工),而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 get还是post,用的都是同一个传输层协议,所以在传输上,没有区别。

不带参数时:基本没有区别

带参数时:get 方法的参数应该放在 url 中,post方法参数应该放在 body 中

4.提交URL方式带参时

<form action="s1?method=post" method="post">

Action中带参数时,如果用get方法提交,后台无法接收到这个参数;如果用post方法提交,后台就可以接收到这个参数。

若get需要传递method参数时,可以使用hidden隐藏域。

<form action="s1" method="get">

<input name='method' type='hidden' value='get'>

5.Get方式的提交需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。

6.安全性问题

通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:
 ①登陆页面可以被浏览器缓存; 
 ②其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。 
建议 :在Form中,建议使用post方法。

并且,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。要想安全传输,就只有加密,也就是 HTTPS(超文本传输安全协议,http的安全传输)。

7.get参数保存在浏览器,而post参数不会保存在浏览器

8.部分浏览器中,post 会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。