http是基于请求与响应。请求由三部分组成,分别是:请求行、消息报头、请求正文。web
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式以下:Method Request-URI HTTP-Version CRLF。其中 Method表示请求方法。数据库
请求方法(全部方法全为大写)有多种,各个方法的解释以下:浏览器
(1)GET 请求获取Request-URI所标识的资源。
(2)POST 在Request-URI所标识的资源后附加新的数据。
(3)HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
(4)PUT 请求服务器存储一个资源,并用Request-URI做为其标识。
(5)DELETE 请求服务器删除Request-URI所标识的资源。
(6)TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断。
(7)CONNECT 保留未来使用。
(8)OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求。缓存
接下来主要介绍两种经常使用的请求方法:GET和POST。
安全
1、GET服务器
GET是向服务器发索取数据的一种请求。ide
GET是获取信息,而不是修改信息,相似数据库查询功能同样,数据不会被修改。
GET请求的参数会跟在url后进行传递,请求的数据会附在URL以后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,若是数据是英文字母/数字,原样发送,若是是空格,转换为+,若是是中文/其余字符,则直接把字符串用BASE64加密。
GET传输的数据有大小限制,由于GET是经过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不一样的浏览器对URL的长度的限制是不一样的。
GET请求的数据会被浏览器缓存起来,用户名和密码将明文出如今URL上,其余人能够查到历史浏览记录,数据不×××全。在服务器端,用Request.QueryString来获取GET方式提交来的数据。性能
2、POST测试
POST是向服务器提交数据的一种请求。加密
POST请求做为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,POST没有限制提交的数据,起限制做用的是服务器的处理程序的处理能力。
POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取。
3、GET与POST的区别
GET是以实体的方式获得由请求URI所指定资源的信息,若是请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
POST用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它看成请求队列中请求URI所指定资源的附加新子项,POST被设计成用统一的方法实现对现有资源的解释、向电子公告栏、新闻组、邮件列表或相似讨论组发信息、提交数据块、经过附加操做来扩展数据库。
POST比GET安全,当数据是中文或者不敏感的数据,则用GET,由于使用GET,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用POST。