get请求的理解
get,就是向某个地方获取一些数据,这个获取的过程可以理解为一个简单的查询,没有造成什么影响,专业名词叫做“幂等”,意思是:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
所以这种类型的请求可以被缓存,下次有同样的请求就直接从缓存读取,不用浏览器再次发送请求。
post请求的理解
post是希望服务器做某项操作,也就是不幂等。因为是设计成有影响的操作,所以它不能被缓存。
post请求一般都是表单提交,可以在body里面携带数据。
所以网上说的安不安全只是因为get请求是可以在url看到,post请求是需要看一下开发者工具而已。
以上是再来浏览器的环境下的规则,如果是在两个服务之间或者是postman之类的工具,就没有那么多限制。只要是符合HTTP格式的就可以发。
一.功能不同
1、get是从服务器上获取数据。
2、post是向服务器传送数据。
二、过程不同
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
2、post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
三、获取值不同
1、对于get方式,服务器端用Request.QueryString获取变量的值。
2、对于post方式,服务器端用Request.Form获取提交的数据。
四、传送数据量不同
1、get传送的数据量较小,不能大于2KB。
2、post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
五、安全性不同
1、get安全性非常低。
2、post安全性较高。
这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击