《HTTP权威指南》之:HTTP报文

本文深入探讨了HTTP报文的流动方向,常用HTTP方法如GET、POST、PUT等的工作原理,以及HTTP状态码的分类。此外,还详细阐述了HTTP首部字段的不同类型及其作用,包括通用首部、请求首部、响应首部和扩展首部。通过对HTTP协议的理解,有助于提升网络通信的效率和安全性。
摘要由CSDN通过智能技术生成

1. 报文流:

HTTP报文就是在HTTP应用程序之间发送的数据块,这些数据块采用文本形式,以“元信息(meta-information)” 开头,元信息用于描述报文的内容及含义。

将HTTP报文比喻成像河水一样流动,报文只能流向下游,不能流向上游。

术语 “流入(inbound)”、“流出(outbound)”、“上游(upstream)”、“下游(downstream)” 用来描述报文的传输方向。



2. 常用的HTTP方法:

GET:

从服务器获取一份文档;

HEAD:

只从服务器获取文档的首部,不会返回实体的主体部分。

这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查,
例如 查看资源是否存在、判断其类型、测试资源是否被修改了 等等;

POST:

向服务器发送需要处理的数据。

通常用来支持HTML表单,表单中填好的数据通常会被送到服务器;

PUT:

将请求的主体部分存储在服务器上;

TRACE:

对可能经过 代理服务器 传递到服务器上去的报文进行追踪。

此方法主要用于调试诊断,用于验证客户端发送的原始请求是否如愿穿过了请求/响应链。

详细过程:
客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序,每个中间节点都可能会修改原始的HTTP请求。
TRACE请求 会在目的服务器端发起一个“环回”动作,行程最后一站的服务器会返回一条 TRACE响应,并在响应体中携带它收到的原始请求报文。
这样客户端就可以检查HTTP请求是否在中间程序上被修改过、以及是如何被修改的。

TRACE报文体:
TRACE请求 中不能带有实体部分的请求体;
TRACE响应 中的实体部分主要是用于携带服务器收到的请求的精确副本;

OPTIONS:

决定可以在服务器上执行哪些方法,用于客户端向服务器询问其支持的方法;

DELETE:

从服务器上删除一份文档。



3. 安全方法:

HTTP定义了一组被称为 “安全方法” 的方法,GET和HEAD方法都被认为是安全的,使用GET和HEAD方法的HTTP请求都不会产生什么动作。

但安全方法并不一定是什么动作都不执行的(实际上这是由Web开发者决定的)。

使用安全方法的目的:是为了当使用 可能引发某一动作的不安全方法时,允许HTTP应用程序开发者通知用户。

例如,当使用支付宝付款时,会弹出提示你正在进行支付操作,这就是因为使用了POST或者PUT方法,在修改服务器上的数据内容。



4. 状态码分类:

整体范围已定义范围分类
100~199100~101信息提示(信息性状态码)
200~299200~206成功
300~399300~305重定向
400~499400~415客户端错误
500~599500~505服务器错误

100:

状态码原因短语含义
100Continue说明服务器收到了请求的初始部分,回复100给客户端,要求客户端继续传输
101Switching Protocols服务器回复客户端101,说明服务器正在根据 UPDATE 首部中指示的协议版本进行切换



5. 首部字段:

HTTP请求和响应报文头中的第一行叫 请求行/响应行,
除去第一行之外,请求头/响应头 中的其余部分叫 首部字段

每个HTTP首部都有一种简单的语法:

首部名称 + 冒号: + (可选空格) + 字段值 + CRLF

例如:
Connection: keep-alive

HTTP首部分为以下几类:

(1)通用首部:

既可以出现在 请求 报文头中,也可以出现在 响应 报文头中;
主要是供 “发送端” 向 “接收端” 提供本端信息(不论“发送端”是客户端还是服务器,都通用)。

例如:

Date: Tue, 3 Oct 1974 02:16:00 GMT		# 用于说明报文创建的时间
Connection: keep-alive					# 用于客户端与服务器之间指定与连接有关的选项
MIME-Version:							# 指示发送端所使用的MIME版本
Transfer-Encoding:						# 告知接收端为了保证报文的可靠传输,本端对报文采用的编码方式
(2)请求首部:

提供更多有关请求的信息,用于客户端向服务器传递一些额外信息,用于客户端向服务器说明 是谁在发送请求、请求源于何处,以及客户端希望获得什么样的响应、客户端处理响应的能力(客户端的喜好及能力)。

例如:

Accept: */*				# 指示客户端希望收到什么类型的数据
Accept-Charset:			# 告知服务器能够发送哪些 字符集
Accept-Encoding:		# 告知服务器能够发送哪些 编码方式
Accept-Language:		# 告知服务器能够发送哪些 语言
(3) 响应首部:

提供更多有关响应的信息,响应头部用于服务器向客户端提供更多的额外信息。

例如:

Server: Tiki-Hut/1.0		# 通知客户端本服务器的类型和版本
(4)扩展首部:

描述主体(HTTP报文体)的长度和内容,或者资源本身。

例如:

Content-Type: text/html; charset=iso-latin-1
(5)扩展首部:

规范中没有定义的新首部。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值