Get和Post
Posted nekoooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Get和Post相关的知识,希望对你有一定的参考价值。
- 工作方法上的区别:
get请求可以有参数也可以没有参数。如果有参数,参数放在URL的结尾用?隔开。
get对url长度一般有限制。大多数浏览器支持2000字符左右的长度,Apache的默认长度一般为8000个字符。且由于url对字符的编码采用的是ascii码,而不是Unicode,所以,如果参数中有非Ascii码而使用get请求时需要先编码再传输。
post请求一般都有参数,因为没有参数的post请求没有意义。但是post参数放在报文体中,并没有放在url后面。且post报文体长度并没有限制。我们常见的post请求报文长度的限制是由服务器产生的。
- 适用场景的区别
get适用于传递参数少且字符全部为Ascii码的请求,不过get请求也可以传递非法字符,只不过在传递之前需要进行编码(百分号编码)。
post适用于传递参数多且含有比较多的特殊字符(如中文)的请求。另外,post适用于修改性的请求,比如更改密码,概括来说,就是提交数据给服务器进行处理。
- 效率上的区别
get请求比post请求更高效,所以,一般资源性的请求都用get。
GET | POST | |
点击返回/刷新按钮 | 没有影响 | 数据会重新发送(浏览器将会提示用户“数据被从新提交”) |
添加书签 | 可以 | 不可以 |
缓存 | 可以 | 不可以 |
编码类型(Encoding type) | application/x-www-form-urlencoded |
application/x-www-form-urlencoded or multipart/form-data. 请为二进制数据使用multipart编码
|
历史记录 | 有 | 没有 |
长度限制 | 有 | 没有 |
数据类型限制 | 只允许ASCII字符类型 | 没有限制。允许二进制数据 |
安全性 | 查询字符串会显示在地址栏的URL中,不安全,请不要使用GET请求提交敏感数据 | 因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以看POST请求比GET请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输 |
可见性 | 查询字符串显示在地址栏的URL中,可见 | 查询字符串不会显示在地址栏中,不可见, |
上表转载自 http://www.cnblogs.com/igeneral/p/3641574.html
我们一般所说的post比get安全并不是说post默认存在什么加密之类的,而是说,get比post更容易将敏感信息暴露出来。而这些暴露来源于get请求的参数在Url中而get请求可以被浏览器缓存,如果这个链接被分享会导致第三方提交进而可能产生意想不到的操作。要想安全传输,还是需要使用加密措施的。
以上是关于Get和Post的主要内容,如果未能解决你的问题,请参考以下文章