http是基于请求与响应。请求由三部分组成,分别是:请求行、消息报头、请求正文。
请求行以一个方法符号开头,以空格分开,后面跟着请求的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。
一、GET
GET是向服务器发索取数据的一种请求。
GET是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改。
GET请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
GET传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取GET方式提交来的数据。
二、POST
POST是向服务器提交数据的一种请求。
POST请求作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,POST没有限制提交的数据,起限制作用的是服务器的处理程序的处理能力。
POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取。
三、GET与POST的区别
GET是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
POST用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,POST被设计成用统一的方法实现对现有资源的解释、向电子公告栏、新闻组、邮件列表或类似讨论组发信息、提交数据块、通过附加操作来扩展数据库。
POST比GET安全,当数据是中文或者不敏感的数据,则用GET,因为使用GET,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用POST。
本文出自 “11441519” 博客,请务必保留此出处http://11451519.blog.51cto.com/11441519/1833029
原文地址:http://11451519.blog.51cto.com/11441519/1833029