HTTP 协议

一、HTTP 协议特点

  1. 支持客户端/服务器模式
  2. 客户端请求时,只需发送请求方式和路径,请求的方法有GET/HEAD/POST 等方式
  3. HTTP 允许传输任何类型数据对象。正在传输的数据类型为Content-type 定义
  4. 无连接,每次连接仅处理一个请求,Server 处理完Client 的请求,收到Client 的回复后断开连接
  5. 无状态,对于事务处理没有记忆能力

二、HTTP 请求

http 请求由三部分组成:请求行、消息报头、请求正文。

2.1 请求行:由一个方法符号开头,空格分开,后面紧跟着URI 和协议的版本,格式如下:

①Method ②Request-URI ③HTTP-Version ④CRLF

①请求方法:

    • GET        获取Request-URI 所标识的资源
    • POST       在Request-URI 所标识的资源后附加新的数据
    • HEAD       请求获取由Request-URI 标识的资源的响应消息报头
    • PUT        请求服务器存储一个资源,并用Request-URI 作为其标识
    • DELETE     请求服务器删除Request-URI 标识的资源
    • TRACE      请求服务器回送收到的请求消息,主要用于测试和诊断
    • CONNECT    保留使用
    • OPTION     请求查询服务器的性能,或者查询与资源相关的选项和需求

HEAD 和GET 方法几乎是一样的,对于HEAD 请求的回应部分,它的HTTP 头部中包含的信息与通过GET 请求得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI 所标识的资源的信息。该方法常用于测试超链接有效性,是否可以访问,以及最近是否更新。

②Request-URI 是统一资源标识符

③HTTP-version HTTP 版本

④CRLF 表示回车和换行

2.2 消息报头稍后讲解

2.3 请求正文即对应请求的资源

三、HTTP 响应

http 响应也由三部分组成:状态行、消息报头、响应正文。

状态行格式如下,之间也是用空格分开:

①HTTP-Version ②status-code ③Reason-Phrase ④CRLF

①HTTP-Version 表示服务器HTTP 协议的版本

②status-code 表示服务器发回响应状态代码,三位数表示,第一个数代表响应类别

1XX:指示信息,表示请求已接收,继续处理

2XX:成功,表示请求已成功接收,理解和接受

3XX:重定向,要求请求必须进一步操作

4XX:客户端错误,请求有语法错误或者请求无法实现

5XX:服务器端错误,服务器未能实现合法的请求

③常见的状态代码与描述:

200:OK                    //客户端请求成功

400:Bad Request            //客户端请求有语法错误,服务器无法理解

401:Unauthorized           //请求未经授权

404:Not Found              //请求资源不存在

500:Internal Server Error   //服务器发生不可预期的错误

503:Server Unavailable      //当前服务器不能处理客户端请求,一段时间可能恢复正常

e.g. HTTP/1.1 200 OK (CRLF)

四、HTTP 消息报头

http 消息报头包括:普通报头、请求报头和响应报头。每一个报头域为“名字+:+空格+值”组成,报头域名字大小写无关。

1. 普通报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输消息。

e.g. Cache-Control: no-cache

2. 请求报头:请求报头允许客户端传输请求的附加信息及客户端自身信息。

e.g. Accept: image/gif

e.g. Host: blog.foool.net

e.g. User-Agent: Mozilla/4.0 (Compatible; MSIE6.0; Windows NT5.0)

3. 响应报头:响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI 所标识资源进行下一步访问的信息。

e.g. Server: Apache-Coyote/1.1

4. 实体报头:请求和响应消息都可以传递一个实体,一个实体由实体报头域和实体正文组成,但并不是实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文和请求所标识资源的元信息。

e.g. Content-Encoding: gzip

e.g. Content-Type: charset=GB2312

e.g. Expires: Thu,15 sep 2012 12:12:12 GMT

HTTP 协议》上有1条评论

  1. Pingback引用通告: 阿里云存储服务OSS API(python) | 呆鸥

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据