首先,客户端和服务器直接是有交互的 —— 请求访问 与 响应 。报文,就是携带了客户端与服务器(还有代理)之间交流信息的数据块。html
简要拎出两点:程序员
起始行(请求行)服务器 |
<method> <request-URL> <version>spa |
GET /test/helloworld.txt HTTP/1.1 |
首部块 | <headers> | Date:Sun, 01 Oct 2018 17:15:16 GMT代理 Accept: text/*htm Host:www.jaykoo.com资源 User-agent:Mozilla/4.75 [en] (Win8; U)文档 |
主体 | <entity-body> | CRLF(空行,此请求报文中并未携带主体) |
request-URL:请求资源的路径。it
version:io
格式:HTTP/<major>.<minor>(major:主要版本号,minor:次要版本号)
method:客户端对服务器执行的动做,常见有
方法 | 描述 | 是否有主体 |
GET | 从服务器获取文档 | 否 |
HEAD | 只从服务器获取文档首部 | 否 |
POST | 想服务器发送须要处理的数据 | 是 |
PUT | 将请求的主体部分存储在服务器上 | 是 |
TRACE | 对可能通过代理服务器传送到服务器上去的报文进行追踪 | 否 |
OPTIONS | 决定能够在服务器上执行哪些方法 | 否 |
DELETE | 从服务器上删除一份文档 | 否 |
通常由:通用首部 / 请求首部 / 实体首部 / 扩展首部 组成。(后二者可选)
发送的实体数据信息
起始行(响应行) |
<version> <status> <reason-phrase> |
HTTP/1.0 200 OK |
首部块 | <headers> | Date:Sun, 01 Oct 2018 17:15:16 GMT Server:Apache/1.3.11 BSafe-SSL/1.38 (Linux) Content-length:403 Content-Type:text/html |
主体 | <entity-body> | <HTML> <HEAD><TITLE>JayKoo</TITLE></HEAD> <BODY> <H1>JayKoo</H1> <P>This is a test!</P> </BODY> </HTML> |
version:同上
status:状态码,常见网页状态码有404(服务器没法找到请求的URL响应的资源)。上面的200表示成功
reason-phrase:缘由短语,为状态码提供了文本解释。
通常由:通用首部 / 响应首部 / 实体首部 / 扩展首部 组成。(后二者可选)
除了响应首部,其他都与请求报文的headers相似。
响应首部:为客户端提供了一些额外的信息,好比服务器信息。