HTTP协议详解

一、基本概念

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

你可能感兴趣的:(HTTP协议详解)