所谓的Get和Post到底是何方神圣?

简介:

Get和Post是表单提交数据的两种基本方式,Get请求数据通过域名后缀URL传送,用户可见,不安全,Post请求数据通过在请求报文正文里面传输,相对来说比较安全。

Get是通过URL传递表单值,Post通过URL看不到表单域的值;

Get传递的数据量是有限的,如果要传递大量数据则不能用Get,比如type=”file”上传文章、type=”password”传递密码或者用>textarea<发表大段文章,Post则没有这个限制;

Post会有浏览器提示重新提交表单的问题,Get则没有。

对于Post的表单重新敲地址栏再刷新就不会提示重新提交了,因为重新敲地址就没有偷偷提交的的数据了。

Post方式的正确的地址很难直接发给他人。

GET和POST的区别:

1. Get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如Edit.aspx?name=test1&id=123456。Post方法是把提交的数据放在http包的body中。

2. Get提交的数据大小有限制,因为浏览器对URL的长度是有所限制的,感兴趣的可以自己了解一下。而Post方法是提交的数据没有限制。

3. Get方式需要使用Request.QueryString来取得变量的值,而Post方式通过Request.Form来获取变量的值。

4. Get方式提交数据,会带来安全问题,比如一个登录页面,通过Get方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问此电脑,就可以从历史记录获得该用户的账号和密码。

Get是从服务器上获取数据,Post是向服务器传送数据。

Get是把参数数据队列加到提交表单的action属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。Post是通过http post机制,将表单内各个字段与其内容放置在HTML HEADER 内一起传送到action属性所指的URL地址。用户是看不到这个过程的。

对于Get方式,服务器端用Request.QueryString获取变量的值,对于Post方式,服务器端用Request.Form获取提交的数据。

Get传送的数据量小,不能大于2kb(还是因为受URL长度的限制)。Post传送的数据量大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。

Get安全性较低,Post安全性较高。因为Get在传输过程,数据被放在请求的URL中,而如今有很多服务器、代理服务器或者用户代理都会讲请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上之间看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

文章来源:

Author:阿星Plus
link:http://xj8c.cc/2016/04/07/get-and-post/