标签:
HTTP协议
客户端连上Web服务器后,若想进行数据的交互,必须要遵守一个的通讯协议,HTTP就是一种客户端与Web服务器进行就交互时的通信协议。
HTTP协议是基于TCP传输协议的,TCP是传输层协议,而HTTP协议是应用层协议,TCP的三次握手特征保证了,通信是连通稳定的,数据传输是不会丢包的。HTTP默认端口是80,是基于请求与响应模式的协议,先出现请求后出现响应,请求与响应成对出现。
Http1.0一次与服务器连接只能获得一个资源,也就是再获得一次资源时就自动断开连接
Http1.1一次与服务器连接可以获得多个资源,不会断开连接可多次获得资源
HTTP请求
一个请求完整格式包括三个部分;请求行,头信息,请求体
请求行:请求中的第一行信息,包括三个部分,请求方式,资源路径,HTTP协议版本
HTTP请求方式有7种;PST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT
常用两种GET,POST
GET方式请求:1用户通过浏览器手动输入url,2超链接<a href="url"></a> 3,<form method="get">指定form表单的提交方式
POST方式请求:只有一种<form method="post">form表单提交指定post方式
两者的区别;
GET方式提交 url地址后携带的数据有大小限制1k,而且提交的数据会在地址栏中显示格式url?key=value&key=value
POST提交方式,数据是封装在请求体中,大小无限制。要注意请求行与头信息之间有一个空行
头信息:很多key-value
常见头信息
Accept:text/html,image/*-----表示客户端可以接收的文件类型HTML文件,和任意格式的图片
Accept-CharSet:ISO-8859-1------客户端可以识别的编码字符集
Accept-Encoding:gzip-----客户端可以识别的压缩数据格式
Accept-Language:zhcn-----客户端浏览器语言
Host:www.itcast.com:80-----客户端请求访问页面地址
If-Modified-Since:Tue,11 Jul 2000 18:23:51 GMT----该请求的资源在客户端保存的最后访问时间(缓存地址)
Referer:hrrp://www.itcast.com/index.jsp-----上一次请求访问的页面地址
User-Agent: -----客户端浏览器版本
Connection:close/Keep-Alive ------该次请求连接后,连接是保持还是关闭1.0关闭1.1保持
Date:Tue,11-----请求时间
重要的头信息
Accept-Encoding:gzip
If-Modified-Since
Referer//该头信息可以防止客户盗链数据,盗链是只其他网站直接链接了将本网站的资源,通过别的网站直接访问本网站的资源,通过判断上一次请求的地址,来限制盗链数据。破解方式,模拟客户端绕过防盗链逻辑,可以通过URLconnection或者Socet通信去更改头信息。
请求体:存放客户端提交post 请求 数据
格式key=value&key=value......
HTTP响应
响应数据也分成三个部分:状态行,头信息,响应体
状态行分为三个部分;Http协议版本,状态码,描述信息
常用状态码 200请求处理成功,302客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存 404访问资源不存在 500服务器内部出错
头信息
Location:"url"----重定向地址,与状态码302对应
Server:apache tomcat---- 服务器类型
Content-Encoding:gzip----设置响应数据压缩格式---与请求头信息中的Accept-Encoding相对应,tomact服务器在server.xml中的<Connector>标签中设置可压缩格式,经过压缩,传输体积更小,性能更好。
Content-Length----响应数据长度
Content-Language---响应数据语言
Content-Type:text/html,charsetGB2132---响应数据类型,响应数据类型采用Mime协议规定类型html文件,在tomcat/conf/web.xml中可以查看
Last-Modified----最后一次更新时间,与请求头信息的if-Modified-Sience一起使用控制缓存
tomact对所有静态Web资源采取缓存策略,客户端第一次访问网页时,服务器头信息中将该信息返回给客户端,客户端缓存资源,当客户端再次访问该网页时,会在请求头信息中的if-ModiFied-Since包含上次缓存的时间,服务器将上次缓存的时间与自己的Last-Modified时间进行比较,如果没更新改变,则客户端访问缓存的静态Web资源,如果更新改变则重新对更新之后的资源进行缓存。当然这种方法时间只能精确到秒,当访问比较频繁时是不可行的,tomcat提供了更精确的控制方法,通过ETag来记录文件最后修改时间精确到毫秒,客户端下次请求时通过if-None-Match进行匹配Etag
Refesh:-----网页自动跳转
Content-Disposition:attachment;filename=aaa.zip;----文件下载时指定文件附件名称
Expires:-1
Cache-Control:NoCache
program:Nocache//这三个是一起使用的用来控制客户端是否进行缓存,对于动态的资源应该禁止缓存。之所以三句是为了解决浏览器的兼容问题的。
响应体;通常是HTML文件内容。
HTTP实用头字段
Range头信息,通过这个头信息可以指定下载资源一部分内容从而实现了断点下载续传功能
标签:
原文地址:http://www.cnblogs.com/ss561/p/4615396.html