HTTP报文整理

首先,客户端和服务器直接是有交互的 —— 请求访问 与 响应 。报文,就是携带了客户端与服务器(还有代理)之间交流信息的数据块。

简要拎出两点:

  • HTTP报文只有:请求报文(request message) 和 响应报文(response message),两种。
  • 报文由三部分组成:起始行(start line)、包含属性的首部块(header)、可选的,包含数据的主体(body)

请求报文

起始行(请求行)

<method> <request-URL> <version>

GET /test/helloworld.txt HTTP/1.1
首部块 <headers>

Date:Sun, 01 Oct 2018 17:15:16 GMT

Accept: text/*

Host:www.jaykoo.com

User-agent:Mozilla/4.75 [en] (Win8; U)

主体 <entity-body> CRLF(空行,此请求报文中并未携带主体)

请求头

request-URL:请求资源的路径。

version:

  格式:HTTP/<major>.<minor>(major:主要版本号,minor:次要版本号)

method:客户端对服务器执行的动作,常见有

方法 描述 是否有主体
GET 从服务器获取文档
HEAD 只从服务器获取文档首部
POST 想服务器发送需要处理的数据
PUT 将请求的主体部分存储在服务器上
TRACE 对可能经过代理服务器传送到服务器上去的报文进行追踪
OPTIONS 决定可以在服务器上执行哪些方法
DELETE 从服务器上删除一份文档

首部块(headers)

一般由:通用首部 / 请求首部 / 实体首部 / 扩展首部 组成。(后两者可选)

  • 通用首部:请求报文和响应报文都能携带的基本信息。比如创建时间(Date)
  • 请求首部:只在请求报文中有意义的首部。上面的Accpt:Text/*(Accept表示了告诉服务器能够发送哪些媒体类型,让服务器对发送的内容做更好的决定。这里为text)
  • 实体首部:报文携带的实体相关信息。
  • 扩展首部:非标准的首部,由程序员创建。

实体

发送的实体数据信息

响应报文

起始行(响应行)

<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)

一般由:通用首部 / 响应首部 / 实体首部 / 扩展首部 组成。(后两者可选)

除了响应首部,其余都与请求报文的headers类似。

  响应首部:为客户端提供了一些额外的信息,比如服务器信息。

实体(见表格)

原文地址:https://www.cnblogs.com/jaykoo/p/9996069.html