前言
这一段时间又了解到了一些自己之前没有接触过的东西,感觉挺容易混淆的,于是在学习完之后,就对其就行了总结、区分!
分享
首先,HTTP协议中包含了四种提交方式:get,post,delete,和put;get和post是最常见的两种。
(1)如果表单是以get方式将数据发送到服务端,那么会将用户在表单中输入的数据放在浏览器的地址栏中发送到服务端(包括账号,密码都是显示出来的,所以不安全)
格式:http://localhost:13840/RequestMethod/AddInfo.ashx?txtName=Itcast&txtPwd=123
结果:
以表单元素name属性的值=用户输入的值&以表单元素name属性的值=用户输入的值
在服务端接收数据:
string userName = context.Request.QueryString[“txtName”];//接收的是表单元素name属性的值,QueryString只能接收get类型的,Form接收post类型的
string userPwd = context.Request.QueryString[“txtPwd”];//接收值
(2)如果数据以post提交,那么表单中的数据全部都放在请求报文的请求体中,可以发送的数据比get大,搜索的时候一般用get
txtName=itcast&txtPwd=123
在服务端接收文件的时候:
string userPwd = context.Request.Form[“txtPwd”];//接收post类型的
string userPwd = context.Request.Form[“txtPwd”];
string userName = context.Request.QueryString[“txtName”];//接收的是表单元素name属性的值,QueryString只能接收get类型的,Form接收post类型的
小结
①get请求会被浏览器主动进行缓存,而post不会(除非是手动设置)
②get的请求参数会永远保存在浏览器的记录里,但是post中的参数不会被保留
③get的安全性比较低,post的安全性相对较高
④get请求会在请求之前对非ASCII字符进行转码,而post则不需要转码(因为post在Request body中,可以传输非ASCII字符)
⑤他们都是基于http这个准则,都是TCP链接,他们做的事儿是一样的,如果都用get,在Request body中隐藏了数据,不同的服务器处理方式是不同的,有的服务器会漏掉一些数据,有的干脆就直接跳过。
⑥get产生一个TCP数据包,post产生两个TCP数据包(Firefox在post中只发送一次)
⑦get是向服务器发索取数据的一种请求,post是向服务器提交数据的一种请求
⑧只是在做简单的查询统计的时候(不涉及安全问题),用get比较好,而做数据添加、删除、修改的时候(设计安全性问题时),要用post请求