首页 > 代码库 > HTTP基础(整理)

HTTP基础(整理)

前一段时间看了有关这个协议的相关文档,对这个协议有了新的理解,这里整理一下。

http是应用层面向对象的协议。

它有以下几个特点:

1、  支持客户服务器模式(这是废话,不支持这个模式怎么工作)

2、  灵活(传什么都行,传的类型由content-type标记)

3、  简单、快速(当客户端有求于服务器的时候,只需注明请求方法和路径,方法有:get,post,head。后面在讲请求报文的时候会举例说明。每种不同的方法都意味着客户和服务器连接的不同方式)

4、  无连接(每次只处理一个请求,收到请求,完成响应,断开连接,下一位……可以节省不少时间)

5、  无状态(没有记忆效应,后面数据要用到前面数据的话,要从头开始。有利有弊:如果是后面要用前面的数据,传送的数据量要加大不少;但是不是这种情况的话,应答就很快)

 

关于请求和应答:

这是这个协议的具体体现,我们看看它到底是怎样工作的。

首先客户端发出请求,格式如下:

                  

请求行

请求报头

请求正文

             

请求行:

方法

URI

协议版本

 

 

方法这里举例说明:

get:输入网址,向服务器通过get要资源GET /form.html HTTP/1.1 (CRLF)

post:请求服务器接受附在请求后面的数据,例如表单POST /reg.jsp HTTP/ (CRLF)

head:和get相似,主要用于检测是否能访问,以及检查更新

然后是服务器的响应

状态行

响应报头

响应正文

                          

状态行:

http-version

Status-code

Reason-Phrase

也就是:   HTTP/1.1 200 OK(CRLF)

http协议版本

响应代码

响应代码的文本描述

关于响应代码和文本描述:

200 OK //正常响应

400 Bad Request //请求的语法不被服务器接受

401 Unauthorized //未授权的请求,要和报头域中的其他字段联合使用

403 Forbidden //服务器接收到请求,但是拒绝服务

404 Not Found //请求的页面找不到

500 Internal Server Error //服务器发生故障

503 Server Unavailable //这一会不行,待会再试试

 

下面是两个报头:

请求报头:(下面是一个个请求报头域组成的请求报头)

Accept

Accept-charset

Accept-encoding

Accept-language

Authorization

Host

User-agent

Authorization:接收到401的消息之后,再次发送验证的时候要包含这个域。

不再一一赘述各种域的功能,我们看一个例子:

GET /form.html HTTP/1.1 (CRLF)

Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms

-excel,application/vnd.ms-powerpoint,application/msword,*/*(CRLF) (接受哪些类型的消息)

Accept-Language:zh-cn (CRLF) (指定一个自然语言,缺省什么都可以)

Accept-Encoding:gzip,deflate (CRLF) (可接受的内容编码,缺省什么都可以)

If-Modified-Since:Wed,05 Jan 2007 11:21:25GMT (CRLF)

If-None-Match:W/"80b1a4c018f3c41:8317"(CRLF)

User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT 5.0) (CRLF) (告知自己的操作系统、版本号)

Host:www.guet.edu.cn (CRLF)(目的主机,端口号)

Connection:Keep-Alive (CRLF)

(CRLF)

响应报头:(同理,一个个的响应报头域)

Location

Server

WWW-Authenticate

Location:重定向接受者到一个新的位置。

Server:服务器用来解决请求所用的软件信息Server?Apache-Coyote/1.1和请求报头的

User-agent相对应。

WWW-Authenticate:包含在401 Unauthorized响应信息中。客户接收到401之后,再发送Authorization请求报头域请求验证,得到的响应就包含这个域。

WWW-Authenticate:Basic realm="Basic Auth Test!"基本验证。

 

到此,已经将http相关的报文、各个域的功能简单的介绍完了。关于HTTP的其他补充,有兴趣再整理。

欢迎大家指正,共同进步(⊙o⊙)。

参考资料:《HTTP详解》

 

HTTP基础(整理)