简介
HTTP
协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。
HTTP
是一种无状态 (stateless) 协议, HTTP
协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。
然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于HTTP
是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie
。
HTTP URL
HTTP URL
包含了用于查找某个资源的详细信息, 格式如下:
http://host[":"port][abs_path]
HTTP请求
http请求由请求行,消息报头,请求正文三部分构成。
HTTP请求状态行
请求行由请求Method
, URL
字段和HTTP Version
三部分构成, 总的来说请求行就是定义了本次请求的请求方式, 请求的地址, 以及所遵循的HTTP协议版本
例如:
GET /example.html HTTP/1.1 (CRLF)
HTTP协议的方法有: GET
: 请求获取Request-URI所标识的资源 POST
: 在Request-URI所标识的资源后增加新的数据 HEAD
: 请求获取由Request-URI所标识的资源的响应消息报头 PUT
: 请求服务器存储或修改一个资源,并用Request-URI作为其标识 DELETE
: 请求服务器删除Request-URI所标识的资源 TRACE
: 请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT
: 保留将来使用 OPTIONS
: 请求查询服务器的性能,或者查询与资源相关的选项和需求
HTTP请求头
消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,主要包括:
HTTP请求正文
只有在发送POST
请求时才会有请求正文,GET
方法并没有请求正文。