程序员必知必会:Http 报文格式

请求报文:

响应报文:

请求行

Method + Path + HTTP 版本

状态行

HTTP 版本 + 状态码 + 状态信息

Http Method

GET

POST

PUT

DELETE

HEAD

HEAD 方法要求与 GET 请求相同的响应,但没有响应主体。这对于检索响应标头中写入的元信息很有用,而不必传输整个内容。

TRACE

回显服务器收到的请求,主要用于测试或诊断。

OPTIONS

这个方法可使服务器传回该资源所支持的所有 HTTP 请求方法。用 * 来代替资源名称,向 Web 服务器发送 OPTIONS 请求,可以测试服务器功能是否正常运作。

CONNECT

用于代理场景,举个例子,使用代理服务器发送 HTTPS 请求:

浏览器先通过明文 HTTP 形式向代理服务器发送一个 CONNECT 请求告诉它目标站点地址及端口号。当代理服务器收到这个请求后,会在对应的端口上与目标站点建立一个 TCP 连接,连接建立成功后返回一个 HTTP 200 状态码告诉浏览器与该站点的加密通道已建成。接下来代理服务器仅仅是来回传输浏览器与该服务器之间的加密数据包,代理服务器并不需要解析这些内容以保证 HTTPS 的安全性。

PATCH

对 PUT 的补充,对已知资源进行局部更新。

首部

HTTP 的首部包括 通用头请求头响应头 和 实体头 四个部分。每个头域由一个 key,冒号(:)和 valuue 三部分组成。

  • 通用首部:是客户端和服务器都可以使用的首部,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,如 Date 首部。
  • 请求首部:是请求报文特有的,它们为服务器提供了一些额外信息,比如客户端希望接收什么类型的数据,如 Accept 首部。
  • 响应首部:便于客户端提供信息,比如,客服端在与哪种类型的服务器进行交互,如 Server 首部。
  • 实体首部:指的是用于应对实体主体部分的首部,比如,可以用实体首部来说明实体主体部分的数据类型,如 Content-Type 首部。

通用首部

key

value

含义

Cache-Control

no-cache

max-age

用于控制缓存

Connection

keep-alive

close

是否需要持久连接

Date

消息发送的时间

Transfer-Encoding

chunked

服务器表明对本响应消息体

(不是消息体里面的对象)

做了怎样的编码

请求首部

key

value

含义

Accept

*/*

type/* 

客户端接收什么介质类型

*/* 表示所有类型,

type/* 表示该类下所有子类型

Accept-Charset

utf-8

客户端可以接受的字符集

Accept-Encoding

gzip, deflate, br

客户端接受的编码方式,通常指压缩方法,如 gzip

Authorization

用于认证信息

Range

仅请求某个实体的一部分。字节偏移以 0 开始

Host

目标服务器的 域名/IP 地址和端口号

User-Agent

浏览器身份标识

响应首部

key

value

含义

Age

当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了。

Server

Apache/2.0.61 (Unix)

服务器表明自己是什么软件及版本等信息

Accept-Ranges

bytes

none

是否接受获取其某个实体的一部分的请求

bytes:表示接受

none:表示不接受

实体首部

key

value

含义

Content-Type

application/json

application/xml

application/x-www-form-urlencoded

multipart/form-data

text/html

请求体的 多媒体类型 (用于POST 和 PUT 请求中)

Etag

"3c6d-5ac19fa79cf00"

一个对象(比如URL)的标志值,就一个对象而言,比如一个 html 文件,如果被修改了,其 Etag 也会别修改,所以,ETag 的作用跟 Last-Modified的 作用差不多,主要供W服务器判断一个对象是否改变了。比如前一次请求某个 html 文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得ETag 值发送给服务器,然后服务器会把这个 ETag 跟该文件的当前 ETag 进行对比,然后就知道这个文件有没有改变了

Content-Length

26012

响应体长度,以字节为单位

常用的 Content-Type

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

状态码

  • 1xx:临时性消息。如:100(继续发送)、101(正在切换协议)
  • 2xx:成功。如:200(OK)、201(创建成功)
  • 3xx:重定向。如:301(永久移动)、302(暂时移动)、304(内容未改变)
  • 4xx:客户端错误。如:400(客户端请求错误)、401(认证失败)、403(被禁止)、404(找不到内容)
  • 5xx:服务器错误。如:500(服务器内部错误) 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值