一、 HTTP协议简介
1、http协议是基于请求响应模式的协议,客户端发送一个请求(此请求用http协议进行包装),服务器端经过处理后发送给客户端(也用http协议进行包装)。此协议是以tcp/ip为基础的,现在广泛使用的是1.1版本
2、http请求(request)
A:请求方法/URL/版本
B:请求头
C:请求正文(注:请求头与请求正文之间是一行空格,表示请求头已经完毕)
D:在这里还要详细讲一下关于http协议中的用于请求的get()何post()方法
1>.HTTP协议的格式:为了理解两者在传输过程中的不同,我们先看一下HTTP协议的格式: HTTP请求:
<request line> //用来说明请求类型(主要说明是get()还是post()方法)、要访问的资源以及使用的HTTP版本 |
2>下来以用httplook这个软件截取的实例详细说明
Get实例:
GET /books/?sex=man&name=Professional HTTP/1.1 |
Post实例
POST / HTTP/1.1 |
注意:两者url放置的区别
3>HTTP-GET和 HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。每个HTTP-GET和HTTP- POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。
HTTP-GET以使用MIME类型application/x-www-form-urlencoded的urlencoded文本的格式传递参数。 Urlencoding是一种字符编码,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是"%20"。附加参数还能被认为是一个查询字符串。(GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。)
4> 与HTTP-GET类似,HTTP-POST参数也是被URL编码的。然而,变量名/变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。
(1) get是从服务器上获取数据,post是向服务器传送数据。
(2) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(3) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(4) GET方式提交的数据长度受浏览器URL长度的限制,而POST则没有此限制。(特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。)
(5) 安全性问题。正如在(2)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用post为好。
2、http响应(response)
A:协议/状态码/描述
B:响应头
c:响应正文(头与正文之间是一个空行)