一、基本概念
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
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请求:请求行、消息报头、请求正文
1、请求行
GET /books/java.html HTTP/1.1
请求方式:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
(1)GET和POST区别:
GET请求:浏览器在发送请求参数时,会将请求参数放置在URL后带给服务器,GET方式提交的数据由于数据时拼接在URL后的,这个数据最多不能超过1kb
POST请求:浏览器在发送请求参数时,会将请求参数放置在HTTP请求的实体内容中带过去,POST请求方式发送的数据大小没有限制
如果用户没有明确的设置则浏览器默认都是用GET方式发送请求
(2)只有form表单中明确的设置method=“post”时,数据才会以POST方式提交
/books/java.html--请求的资源部分的名称
HTTP/1.1 --当前请求遵循的HTTP协议号
2、 若干请求头:
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 当前时间
3、.实体内容
三、HTTP响应:状态行,响应头,实体内容
HTTP/1.1 200 OK
Server:Microsoft-IIS/5.0
Date:Thu, 13 Jul 2000 05:46:53 GMT
Content-Length:2291
Content-Type:text/html
Cache-control:private
<HTML>
<BODY>
……
1、状态行
HTTP/1.1-- 当前遵循的协议
常见状态码:
200 OK //客户端请求成功
400 BadRequest //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal ServerError //服务器发生不可预期的错误
503 ServerUnavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
eg:HTTP/1.1 200 OK (CRLF)
OK -- 原因叙述<CRLF>
2、响应头
Location:http://www.it315.org/index.jsp 配合302状态码使用,表示请求重定向的地址,浏览器在接收到302和
Location后会自动访问Location指定的地址
Server:apachetomcat 服务器的基本信息
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 指定浏览器经过多少秒刷新当前页面到哪个url
Content-Disposition:attachment;filename=aaa.zip 和下载相关的头
Transfer-Encoding:chunked 服务器发送数据时使用的发送模式
Set-Cookie:SS=Q0=5Lb_nQ;path=/search 和Cookie相关的头
ETag:W/"83794-1208174400000" 和浏览器缓存相关的头
Expires:-1 通知浏览器是否缓存资源的头,这个头可以设置为以毫秒问单位单的时间之,指定浏览器缓存资源为给定的
时间,也可以设置为-1表示通知浏览器不要缓存资源
Cache-Control:no-cache 通知浏览器是否缓存资源
Pragma:no-cache 通知浏览器是否缓存资源
上面的三个头都是用来控制浏览器是否缓存资源,存在三个同样功能头的原因,是因为历史原因。一般来说,这三个头通常
会一起使用。
Connection:close/Keep-Alive 是否保持连接
Date:Tue, 11 Jul 2000 18:23:51 GMT 当前时间
3、实体内容
参考资料:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html