Http协议学习小结

 本文是对这几天学习Http协议的基础知识的小结。内容包括了Http协议的原理,Http请求信息和Http响应信息以及Http协议状态码等内容。

1、Http协议的基本原理:有客户端向服务器发送请求,服务端对请求处理,对客户端进行相应。如下图所示。

技术分享

图1 Http协议原理图

 

下面给出一个简单的请求和响应的示例代码:

 

客户端请求:

GET / HTTP/1.1 
Host: localhost
Accept: text/html
Accept-Language: en-us
Accept-Encoding: gzip,deflate
Connection: keep-alive
空行(CR+LF) 

 

服务端响应:

HTTP/1.1 200  OK 
Date: Fri, 13 Jul 2012 02:45:30 GMT
Server: Apache
Last-Modified: Fri ,31 Agu 2007 02:02:20 GMT
ETag: "45bae1-16a-46d776ac"
Connection: close
Content-Type: text/html
Content-Length:362
空行(CR+LF)
<html>          
<head>
</head>
<body>
....                   --Content  362Bytes
....                       
</body>
</html>

 


2、Http请求

a.请求报文格式:

----------------------------------------------------------

请求行             ↔           GET / HTTP/1.1

请求头信息       ↔    Host: localhost

...

...

...

空行(CR+LF)

[请求主体信息](可以没有)   

 -----------------------------------------------------------

b.说明:

→请求行:请求方法+请求路径+Http协议版本

请求方法:GET,POST,HEAD,OPTION,DELETE,PUT等

请求路径:   /  

Http协议版本:HTTP/0.9     HTTP/1.0     HTTP/1.1

 

→请求头信息

Host:请求的主机名称   (localhost)  

         注意:Host字段信息必须被包含在请求头信息中,因为同一个IP地址下可能会有多个虚拟主机,需要Host来指定请求的是该IP下的哪一个主机。

Accept:客户端可以处理的文件类型。           (text/html,text/plain,image/jpeg)

Accept-Encoding:用户代理支持的内容编码及优先级顺序   (gzip,deflate,compress)

Accept-Charset:用户代理支持的字符集及优先级顺序       (iso-8859-5)

Referer:告知服务器请求的原始资源的URI  (用此字段可以进行反防盗链)

            例如:Referer:http://www.baidu.com

User-Agent:传达创建请求的浏览器和用户代理名称等信息

 


3、Http响应

a.响应报文格式

-------------------------------------------------

响应行          ↔    HTTP/1.1 200 OK

响应头信息    ↔    Server:Apache

...

...

...

空行(CR+LF)

[响应主体信息](可以没有)

--------------------------------------------------

b.说明:

→响应行:Http协议版本+状态码+状态字

Http协议:HTTP/0.9,HTTP/1.0,HTTP/1.1

状态码:

    状态码                说明

     1XX                  信息性状态码。接收的请求正在处理

     2XX       成功状态码。请求正常处理完毕

     3XX       重定向状态码。需要进行附加操作以完成请求

     4XX       客户端错误状态码。服务器无法处理请求

     5XX       服务器错误状态码。服务器处理请求出错

一些重要的状态码:

2XX:200  204  206

3XX:301  302  303  304  307

4XX:400  401  403  404

5XX:500  503 

        

 

 

→响应头信息

Age:告知客户端源服务端在多久前创建了响应(字段单位为:秒)

        若创建该响应的服务器是缓存服务器,Age值是指缓存后的响应再次发起认证到认证完成的时间值。代理创建响应时必须加上首部字段Age。

ETag:告知客户端响应实体信息的标记,将资源唯一标识,

        ETag由服务器分配,没有统一的算法规则。

Location:将接收方引导至另一个资源所在处

Server:告知客户端当前服务器上安装的HTTP服务器应用程序的信息。不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启用的可选项。

 


 4、实体首部字段(请求头信息或者响应头信息的字段)

Content-Encoding:对实体的主体部分选用的内容编码方式

Content-Language:告知客户端主体信息使用的语言

Content-Length:说明主体信息的大小(字节)

Content-Type:说明主体信息的文件(媒体)类型

Set-Cookie:服务端向客户端写Cookie内容信息

Cookie:客户端向服务器发送Cookie内容信息

 

 

 

附:以上内容参考自《图解HTTP》一书。 

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。