HTTP协议详解

来源:互联网 发布:vivo软件商店官网 编辑:程序博客网 时间:2024/06/06 00:52

1. HTTP协议详解

HTTP协议分为HTTP请求和HTTP响应

1.1. HTTP请求

1.1.1. HTTP请求结构

一个典型的HTTP请求分为 一个请求行 若干请求头 一个空行 实体内容

1.1.2. 一个请求行

GET /books/java.html HTTP/1.1

请求方式:一共有7种请求方式(:GETPOSTHEADOPTIONSPUTDELETETARCE,但是真正使用的只有两种 GET POST,其他五种很少使用。

POSTGET之间的区别:请求参数的提交方式不同,GET请求请求参数位于URL后面,所能传输的请求参数最大不超过1KB,安全性比较低.POST提交请求参数位于请求的实体内容中,没有大小限制,也比较安全

只有当一个表单method明确被指定为POST,才是POST提交,其他情况下都是GET提交.

请求的资源:/books/java.html

所遵循的协议:HTTP/1.1

1.1.3. 若干请求头

http协议中请求头非常多,下面列出常见的请求头及其功能:

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 

-- 当前发送请求的时间

1.1.4. 一个空行

空行的作用为分割请求头和实体内容。

1.1.5. 实体内容

实体内容中为需要传递给服务器的内容数据。

1.2. HTTP响应:

1.2.1. HTTP响应结构

一个典型的HTTP响应分为 一个状态行 若干响应头 一个空行 实体内容。

1.2.2. 一个状态行

HTTP/1.1 200 OK

所遵循的协议号:HTTP目前分为1.01.1两个版本,其中1.0每次请求都要新建连接,响应结束后断开连接,连接不会复用效率较低。1.1版本在一次请求结束后会保持连接一段时间,下次再次请求时可以复用连接,提高了效率。

状态码:3位的十进制数,通过不同的状态码表示服务器对请求的不同处理结果。

200 表示成功处理完成请求

302 表示重定向

304 表示通知浏览器使用缓存中的资源

307 表示通知浏览器使用缓存中的资源

404 找不到资源

500 服务器端错误

原因叙述:一个字符串描述原因。

1.2.3. 若干响应头  

http协议中响应头头非常多,下面列出常见的响应头及其功能:

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 

-- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头

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 

-- 响应时的时间

 

1.2.4. 一个空行

空行的作用为分割响应头和实体内容。

1.2.5. 实体内容

实体内容中为服务器发送回的内容数据。

 

0 0
原创粉丝点击