1)原理讲解

http:超文本传输协议(hypertext transport protocol)

http协议的版本:

http/9.9:仅用于传输html的文档。

http/1.0:支持多媒体数据的处理,有缓存功能。

http/1.1:更多的请求方法,更精细的缓存控制,持久连接。

HTTP报文:

    http事务:一次请求以及与其对应的响应。

HTTP请求常见的方法:get,put,head(发相应的报文),post(提交表单),delete、

    get:从服务器向客户端发送命名资源

    put:将来自客户端的数据存储到一个命名的服务器资源中去。

    delete:从服务器中删除命名资源

    post:将客户端数据发送到一个服务器网关应用程序。

    head:仅发送命名资源响应中的http首部 

http请求:request

http响应:response

1)HTTP常见状态码。

1xx:信息性状态码

    100:请求继续

    101:转换协议

2xx:成功状态码

    200:ok,表示请求没有问题。

    201:created,创建服务器对象的请求。

    202:Accepted,请求已被接受。单服务器还未执行任何动作。

    203:Non-Authoritative Information,实体首部。

    204:No Content,响应报文中包含若干首部和一个状态行,但没有实体的主体部分。

    205:Reset Content,主要用于浏览器的代码,负责告知浏览器清除当前页面中的所有html表单元素。

    206:Partial Content,成功执行了一个部分或Range范围请求。

3xx:重定向状态码。

    301:move permanently,永久重定向,在响应报文中使用首部“location:URl”

    302:found,临时重定向,在响应报文中使用首部“location:URL”指定临时资源位置。

    303:not modified,条件是请求中使用。

    304:Not modified,客户端可以通过所包含的的请求首部,使其请求变成有条件的。

    305:Use Proxy,必须通过一个代理来访问资源。

4xx:客户端类的错误状态码。

    400:Bad Request,用于告知客户端它发送了一个错误的请求。

    401:Unauthorize 认证。

    402:Payment Required 保留还未使用。

    403:Forbidden,请求被服务器拒绝。

    404:not found,服务器无法找到请求的url。

    405:Method not allowed,不允许使用此方法请求响应的url。

    406:Not Acceptable,服务器于客户端没有可接受的url相匹配的资源。

    407:Proxy Authentication Required,对资源要求进程认证的代理服务器。

    408:Request timeout,请求超时的状态码。

    409:Conflict,请求资源时引发的一些冲突。

5xx:服务器端类的错误。

    500:Internal Server Error,服务器内部错误。

    501:Not Implemented,客户端发起的请求超出服务器的能力范围。

    502:Bad gateway,代理服务器从上游收到了一条假响应。

    503:Service Unavailable,服务器此时无法提供服务。

2)标准的HTTP首部:

通用首部:提供与报文相关的基本信息。

    connection:定义c/s之间关于请求/响应的有关选项。

    Via:显示了报文经过的中间节点。

    Date:提供日期和时间标准。

    Cache-Control:缓存指示。

    Pragma:另一种随报文传送指示的方式。

请求首部:是只在请求报文中有意义的首部。

    Client-IP:提供了运行客户端的机器的ip地址。

    From:提供客户端用户的e-mail地址。

    Host:给出了接收请求的服务器的主机名和端口号。

    Referer:提供了包含当前请求URI的文档的URL。

    UA-Color:提供了于客户端显示器的显示颜色有关的信息。

    UA-CPU:给出了客户端cpu的类型或制造商。

    UA-Disp:提供了与客户端显示器能力有关的信息。

    UA-OS:运行在客户端机器上的操作系统名称及版本。

    UA-pixels:客户端显示器的像素信息。

    User-Agent:发出请求的应用程序名称告知服务器。

响应首部:有自己的响应首部集,为客户端提供一些额外信息。

    age:响应持续时间

    Public:服务器为其资源支持的请求方法列表

    Retry-After:资源不可用的话,在此日期或时间重试。

    Server:服务器应用程序软件的名称和版本。

    Title:标题

    Warnig:警告报文。    

实体首部:提供了有关实体及其内容的大量信息。从有关对象类型的信息。到能够对资源使用的各种有效的请求方法。

    Allow:列出了可以对此实体执行的请求方法。

    Location:告知客户端实体实际上位于何处。用于将接受端定向到资源位置上去。

    扩展首部

Accept首部:用户标明客户端自己更倾向于使用的能力

    Accept:告知服务器能够发送哪些媒体类型。

    Accept-Charset:字符集

    Accept-Encoding:编码方式。

    Accept-Language:语言。

    TE:扩展传输编码。

安全相关的响应首部:

    set-Cookie:服务器端在某客户端第一次请求时发给令牌。

    WWW-Authentication:质询,要求客户端提供账号和密码。

内容首部:提供了于实体内容有关的特定信息。

    content-Encoding:对主题执行的任意编码方式。

    Content-Language:使用最合适的语言。

    Content-Length:主题的长度。

    Content-Location:资源的位置。

    Content-Base:解析主机中的相对URL时使用的基础URL。

    COntent-MD5:主题的md5效验和。

    Content-Range:在整个资源中此实体表示的字节范围。

    Content-Type:主体的对象类型。

实体缓存首部:

    Etag:实体标签。

    Expires:过期期限。

    Last-Modified:最近的修改时间。