HTTP的简单讲解

来源:互联网 发布:软件外包服务方案 编辑:程序博客网 时间:2024/05/22 10:38
一、HTTP协议概述
规定了客户端和服务器端如何通信的协议。
基于TCP/IP的一套应用层的协议。
分为请求和响应两部分。

特点:
基于请求响应模型
一次请求对应一次响应
请求只能由客户端发出,服务器端被动等待请求做出响应。


HTTP协议目前为止有两个版本:
HTTP1.0
HTTP1.1
区别是,1.1可以复用底层流,1.0不行
二、HTTP请求
一个HTTP请求由 一个请求行 若干请求头 一个空行 实体内容
(1)一个请求行:
GET /news/1.html HTTP/1.1
代表请求方式
请求的资源路径
当前请求遵循的协议
(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)实体内容
POST提交的请求参数就是在实体内容中进行传输的


三、HTTP响应
一个状态行 若干响应头 一个空行 实体内容
(1)一个状态行
HTTP/1.1 200 OK
所遵循的协议版本
响应状态码,所谓的状态码时http协议规定的3位的十进制数100-599,用这三位的状态码表示处理的结果。
其中
100-199表示处理成功,如果想要继续进行需要进一步提供信息
200-299表示请求正确的处理完成
300-399表示请求正确的处理但是产生了一些额外情况
400-499表示客户端发送的请求由问题
500-599表示服务器发生了问题


200 - 请求正确处理完成
302 - 发生了请求重定向,配以Location相应头实现请求重定向的功能
304、307 - 通知客户端使用缓存中的资源
404 - 找不到资源
500 - 服务器处理请求发生错误
状态描述
(2)若干响应头
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.tarena.cn 
-- 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
Content-Disposition: attachment;filename=aaa.zip 
-- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 
-- 和Cookie相关的头
Expires: -1 
-- 通知浏览器是否缓存
Cache-Control: no-cache  
-- 通知浏览器是否缓存
Pragma: no-cache   
-- 通知浏览器是否缓存
--之所以同一个功能有三个不同的头,是因为历史原因造成的。我们通常这三个头一起使用。
Connection: close/Keep-Alive   
-- 是否保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT 
-- 响应时的时间
(3)实体内容
放置的时服务器发送给浏览器的数据。
0 0