HTTP协议初探
HTTP介绍
HTTP(hypertext transfer protocl)一个基于请求与响应模式的、无状态的、应用层的协议
基于传输层TCP的连接方式
版本有HTTP/1.0(单次连接)与HTTP/1.1(持续连接)两种
### HTTP协议特点 ###
1 支持B/S模式。
2 简单快速。客户向服务器请求服务时,只需传送请求方法和路径。
请求方法常有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
3 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4 无连接:限制每次连接只处理一次请求。
5 无状态:无状态是指协议对于事物处理没有记忆能力。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传。
HTTP协议之详解URL
HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
http://host[":"port][abs_path]
http表示要通过HTTP协议来定位网络资源
host表示合法的Internet主机域名或者IP地址
port指定一个端口号,为空则使用缺省端口80
abs_path指定请求资源的URI
如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出
eg:
1、输入:www.guet.edu.cn
浏览器自动转换成:http://www.guet.edu.cn/
2、http:192.168.0.116:8080/index.jsp
HTTP协议之请求篇
基于请求-响应模式的协议
先请求,再出现响应 ---- 请求和响应 一一对应
http请求由三部分组成,分别是:请求行、头信息、请求体。
1 请求行格式:请求行:请求中第一行信息
包括:请求方式、资源路径、HTTP协议版本(CRLF)(GET / HTTP/1.1 )
HTTP请求方式有七种 : POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用两种: GET:请求获取Request-URI所标识的资源,数据大小限制1K,在URL上显示
* http://localhost/day04/url?username=zhangsan
* 格式 url?name=value&name=value&name=value... (键值对)
:POST:数据在请求体中,不在url上显示 ,没有数据大小限制
* username=zhangsan 请求体和头信息直接存在一个空行
2 头信息后述
3、请求体(略)
HTTP协议之响应篇 ##
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
响应数据 分为三个部分 :状态行、头信息、响应体
1 状态行分为三个部分: HTTP协议版本、状态码、描述信息(HTTP/1.1 200 OK)
常用状态码:
200 请求处理成功
302 客户端进行重定向
304 客户端访问资源没有被修改后,客户端访问本地缓存
404 访问资源不存在
500 服务器内部出错
2、头信息后述
3、响应体就是服务器返回的资源的内容
HTTP协议之消息报头篇(头信息)
HTTP消息报头(key-value )由客户端到服务器的请求和服务器到客户端的响应组成。
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头
### 1 请求报头: ###
Accept: text/html,image/* ----- 客户端可以接收文件类型 text/html HTML文件
Accept-Charset: ISO-8859-1 ----- 客户端可以识别编码字符集
Accept-Encoding: gzip ----- 客户端可以识别压缩数据格式 gzip是一种压缩格式
Accept-Language:zh-cn ----- 客户端浏览器语言
Host: www.itcast.com:80 ----- 访问服务器地址
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
----- 该请求的资源在客户端保存最后访问时间 (缓存有关)
Referer: http://www.itcast.com/index.jsp ---- 上一次请求访问页面地址
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客户端浏览器类型版本
Connection: close/Keep-Alive ---- 该次请求连接后,连接是保持还是关闭 1.0 关闭 1.1 保持
Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 请求时间
**重要** Accept-Encoding 、If-Modified-Since 、Referer(防止盗链)
模拟浏览器访问服务器 获得 refererServlet当中信息
1) URL 连接 ---- HTTP协议
2) Socket 连接 ----- TCP协议
### 2 响应报头 ###
Location: http://www.it315.org/index.jsp ---- 重定向地址 结合 302 一起使用
* 重定向 两次请求 两次响应
Server:apache tomcat ----- 服务器类型
Content-Encoding: gzip ---- 设置响应数据压缩格式 ---- 请求 Accept-Encoding
* 如果响应数据经过压缩 传输体积更小,性能更好
Content-Length: 80 ----- 响应数据长度
Content-Language: zh-cn ----- 响应数据语言
Content-Type: text/html; charset=GB2312 ----- 响应数据类型
* 数据类型采用Mime协议规定类型 html文件 ---- text/html、 jpg文件---- image/jpeg
* 在 tomcat/conf/web.xml 中查看文件mime类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
----- 和请求头信息 If-Modified-Since一起使用,控制服务器缓存
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
Refresh: 1;url=http://www.it315.org ----- 网页自动跳转
Content-Disposition: attachment; filename=aaa.zip ----- 文件下载时指定文件附件名称
### 控制该程序在客户端不缓存 ###
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 对于动态程序,经常修改, 禁止浏览器缓存内容
**重点** 302结合Location进行重定向 、在tomcat配置gzip压缩 、tomcat缓存策略 、禁止浏览器缓存
注意事项
1、出现输入错误,则请求不会成功。
2、报头域不分大小写。
3、更深一步了解HTTP协议,可以查看RFC2616,在http://www.letf.org/rfc上找到该文件。
4、开发后台程序必须掌握http协议