什么是HTTP:http是一个应用层面向对象的协议,是一个基于请求响应模式,无状态的,应用层的协议,常基于TCP链接方式。目前有HTTP1.0,HTTP1.1,区别是http1.0一次请求,立即断开连接,所以一个连接是只可以获取到一个web资源,而http1.1请求后会保持连接,一个连接可以获取多个web资源。目前大部分采用的是http1.1.
HTTP请求:
一个http请求:一个请求行,若干请求头,一个空行,请求实体内容
一个请求行:
GET /books/java.html HTTP/1.1
请求方式:一共有七种POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,但是我们通常使用的只有两种GET POST
GET:在传输请求参数时,请求参数赋值在地址栏中,大小不超过1KB,安全性比较低
POST:在传输请求参数时,请求参数会在请求的实体内容中进行传输,大小没有限制,安全性比较高
请求的资源地址:要访问的资源的uri地址 所遵循的协议
若干请求头:
Accept: text/html,image/* --当前客户端可以接受的数据类型
Accept-Charset: ISO-8859-1--当前客户端可以接受的文本的编码类型
Accept-Encoding: gzip,compress --当前客户端可以接受的数据的压缩格式
Accept-Language: en-us,zh-cn --表明当前客户端可以接受的语言环境
Host: www.it315.org:80-- 当前请求要访问的主机名称
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT -- 和缓存相关的头
Referer: http://www.it315.org/index.jsp --- 和防盗链相关的头
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) -- 浏览器的基本信息
Cookie --和cookie相关的头
Connection: close/Keep-Alive -- 是否要继续保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT -- 发送请求的时间
一行空行
请求的实体内容:存放着要发送给服务器的具体的数据,如果是post提交,请求参数就是在实体内容中传输过去的
HTTP响应:一个状态行,若干响应头,一个空行,响应的实体内容
状态行:遵循的http协议 版本,响应状态100-999不同数据不同意义,通常是200——>响应结束正常,302——>重定向,304,307——>使用缓存,404——>找不到资源,500——>服务器出错,描述信息
若干响应头
!!!Location: http://www.it315.org/index.jsp --配合302状态码实现重定向功能
Server:apache tomcat -- 服务器的基本信息
Content-Encoding: gzip -- 发送过去的数据使用的压缩格式
!!Content-Length: 80 -- 发送过去的数据量的大小单位是字节
Content-Language: zh-cn -- 发送过去的数据使用的语言环境
!!!!Content-Type: text/html; charset=GB2312 -- 发送过去的数据的类型,如果是文本类型,还可以指定文本使用的编码集
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --和缓存相关的头
!!!Refresh: 1;url=http://www.it315.org --定时刷新的头,隔了多长时间后自动刷新到哪个地址
!!!!Content-Disposition: attachment;filename=aaa.zip --和文件下载相关的头
Transfer-Encoding: chunked --表明当前数据发送的方式,是一次发送所有,还是分多个数据包发送
!!!Set-Cookie:SS=Q0=5Lb_nQ; path=/search -- 和cookie相关的头
ETag: W/"83794-1208174400000" -- 和缓存相关的头
!!Expires: -1 -- 控制浏览器是否缓存资源的头,如果给一个时间,则表明要缓存资源到指定的时间,如果给一个0或-1表明禁止缓存当前资源
!!Cache-Control: no-cache --控制浏览器是否缓存资源
!!Pragma: no-cache -- 控制浏览器是否缓存资源
--以上三个头都可以控制浏览器是否缓存资源,之所以一个功能有三个头,是因为历史原因造成的,历史上不同浏览器支持的头不同,所以我们通常,这三个头一起使用。
Connection: close/Keep-Alive --是否继续保持链接
Date: Tue, 11 Jul 2000 18:23:51 GMT ---发出响应的时间
一个空行
响应的实体内容:服务器发送的要浏览器解析显示的内容就是通过响应的实体内容发送过来的