1.Http定义:
1.HTTP(Hyper Text Transfer Protocol),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
2.HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等),服务器端返回数据的时候,也要带上什么东西。
3.HTTP协议工作于客户端-服务端架构为上。
2.版本
1.0
请求数据,服务器返回后, 将会断开连接
1.1请求数据,服务器返回后, 连接还会保持着。 除非服务器 | 客户端 关掉。
有一定的时间限制,如果都空着这个连接,那么后面会自己断掉。
3.查看浏览器和 tomcat服务器的对接细节
左面是浏览器请求提交的数据信息
右面是服务器解析响应到的数据信息
4.Http请求数据解释
> 请求的数据里面包含三个部分内容 : 请求行 、 请求头 、请求体
* 请求行
POST /examples/servlets/servlet/RequestParamExample HTTP/1.1
POST : 请求方式 ,以post去提交数据
/examples/servlets/servlet/RequestParamExample
请求的地址路径 , 就是要访问哪个地方。
HTTP/1.1 协议版本* 请求头
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms- xbap, */*
Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 31
Connection: Keep-Alive
Cache-Control: no-cacheAccept: 客户端向服务器端表示,我能支持什么类型的数据。
Referer : 真正请求的地址路径,全路径
Accept-Language: 支持语言格式
User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。
Content-Type: 提交的数据类型。经过urlencoding编码的form表单的数据
Accept-Encoding: gzip, deflate : 压缩算法 。
Host : 主机地址
Content-Length: 数据长度
Connection : Keep-Alive 保持连接
Cache-Control : 对缓存的操作* 请求体
>浏览器真正发送给服务器的数据
发送的数据呈现的是key=value ,如果存在多个数据,那么使用 &firstname=zhang&lastname=sansan
5.Http响应数据解析
> 请求的数据里面包含三个部分内容 : 响应行 、 响应头 、响应体
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 673
Date: Fri, 17 Feb 2017 02:53:02 GMT...这里还有很多数据...
* 响应行
HTTP/1.1 200 OK1.协议版本
2.状态码 :表示咱们这次交互到底是什么样结果的一个code.
3.OK : 对应前面的状态码
200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
更多状态码http://www.runoob.com/http/http-status-codes.html
* 响应头
Server: 服务器是哪一种类型。 Tomcat
Content-Type : 服务器返回给客户端你的内容类型Content-Length : 返回的数据长度
Date : 通讯的日期,响应的时间
*响应体
页面的一系列内容html...
6.Get 和 Post请求方式区别
1.请求路径不同,post请求在url后面不跟任何的数据,Get请求在地址后面跟上数据
2.带上的数据不同,POST请求会使用流的方式写数据,Get请求是在地址栏跟上数据
3,由于Post请求使用流的方式写数据,所以一定需要一个Content-Length的头来说明数据的长度有多少。
我们来看看两者的区别:
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.