HTTP权威指南----第三章

HTTP权威指南----第三章:

在这里插入图片描述

由于前两章内容比较浅显易懂,因此未进行整理。







HTTP的报文:

  1. http的报文类型包括请求(request)和响应(response)

    1.1 请求(request)是client向server发送的

    1.2 响应(response)是server向client回复的







  2. 报文的组成:

    2.1 请求和响应的报文基本机构相同,都是包括“起始行(START LINE)”、“首部(HEADERS)”和“主体( ENTITY-BODY)”。

    请求报文的格式:

    <method> <request-URL> <version>
    <headers>
    
    <entity-body>
    

    响应报文的格式:

    <version> <status> <reason-phrase>
    <headers>
    
    <entity-body>
    

在这里插入图片描述

请求报文(request)中包含的信息:

START LINE:

​ GET:method

​ *.php:request-URL

​ HTTP/1.1:version

HEADERS:

​ Host:host

ENTITY-BODY:

​ 本请求中不包括

响应报文(response)中包含的信息:

START LINE:

​ HTTP/1.1:version

​ 200:status

​ OK:reason-phrase

HEADER:

​ date:日期和时间

​ server:apache搭建的服务

​ X-Powered-By:PHP版本

​ Transfer-Encoding:chunked 分块编码。关于分块编码后续会有讲到,等不及可以先看这个blog:https://www.cnblogs.com/jamesvoid/p/11297843.html

​ content-type:text/html 内容类型及文本编码标准。

ENTITY-BODY:

​ Hello World!:主体(body)





2.2 起始行(START LINE)

​ 起始行分为请求行和响应行。顾名思义:请求报文(request)的起始行即为请求行;响应报文(response)的起始行即为响应行。



​ 请求行:

​请求报文请求服务器对资源进行一些操作。请求报文的起始行即为请求行。包含了一个方法(method)和一个请求 URL(request-URL)。这个方法描述了服务器应该执行的操作,请求URL描述了要对服务器的哪个资源执行这个方 法。请求行中包含HTTP的版本,用来告知服务器,客户端使用的是哪种HTTP。




​ 响应行:

​响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。响应报文的起始行即为响应行,包含了响应 报文使用的HTTP版本、数字状态码,以及描述操作状态的文本形式的原因短语。所有这些字段都由空格符进行分隔。 在HTTP/1.0之前,并不要求在响应中包含响应行。

2.2.1 方法(method)

​ GET:通常用于请求服务器某个资源

​ HEAD:与GET类似,但是服务器只返回收不,不返回实体的主体部分。

​ PUT:与GET相反,其会向服务器写入数据。

​ POST:用来向服务器发送(非写入)数据,通常用来向服务器发送表单。服务器再将表单中的内容发送到指定的地方。

​ TRACE:客户端发送的请求可能会被中间穿越的firewall、proxy、gateway等程序修改。因此在服务器收到TRACE请求后 会向客户端回复该TRACE请求。基于此,客户端可判断该TRACE请求在到达服务器之前是否被 修改或被修改了哪些内容。(主要用于诊断)

​ OPTIONS:可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法。

​ DELETE:使服务器删除请求URL所指定的资源。

​ 扩展方法:(扩展请求方法均非常危险,实现此操作之前应该通过用户认证)

​ LOCK:允许用户“锁定”某个正在编辑的资源,避免该资源同时被其他人修改。

​ MKCOL:允许用户创建资源。

​ COPY:在服务器上复制资源。

​ MOVE:在服务器上移动资源。

2.2.2 状态码:

​ 方法(method)是客户端告知服务器要做什么;状态码(status)则是服务器告知客户端发生了什么事情。状态码是在每 条响应报文的起始行中返回的。会返回一个数字状态(例如:200)和一个可读的状态(例如:OK)。数字码便于程 序进行差错处理,而原因短语则更便于人们理解。

​ 状态码定义:https://tools.ietf.org/html/rfc2616#section-10

​ 状态码分类:

在这里插入图片描述

​ 状态码解释:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

​ 状态码RFC对应列表:http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

2.2.3 原因短语:
​ 原因短语和状态码成对出现。原因短语是状态码的可读版本,应用程序开发者将其传送给用户,用以说明在请求期间发生了什么情况。

2.2.4 版本号:
​ 版本号会以HTTP/x.y的形式出现在请求和响应报文的起始行中。为HTTP应用程序提供了一种将自己所遵循的协议版本告 知对方的方式。

​ 使用版本号的目的是为使用HTTP的应用程序提供一种线索,以便互相了解对方的能力和报文格式。在与使用HTTP1.1的 应用程序进行通信的HTTP1.2应用程序应该知道,它不能使用任何新的1.2特性,因为使用老版本协议的应用程序很 可能无法实现这些特性。

2.3 HEADERS(首部)

​ HTTP首部字段向请求和响应报文中添加了一些附加信息。本质上来说,他们只是一些名/值对的列表。

在这里插入图片描述

通用首部:既可以出现在请求报文中,也可以出现在响应报文中。例如Date首部,显示日期和时间。
在这里插入图片描述

在这里插入图片描述
请求首部:提供更多有关请求的信息。例如Accept首部,用来告知服务器,客户端会接受与其请求相符的任意媒体类型。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
响应首部:提供更多有关响应的信息。例如Server首部,服务器用来告知客户端,目前客户端是与哪个服务进行交互。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实体首部:描述主体的长度和内容,或者资源自身。例如Content-Type首部,服务器用来告知客户端目前响应的信息类型 和编码方式。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
扩展首部:非标准首部,由应用程序开发者创建,但还未 添加到已批准的HTTP规范中取。即使不知道这些扩展首部的含 义,HTTP程序也要接受他们并对其进行转发。
注:每个HTTP首部都有一种简单的语法。名字后面跟着冒号(:),然后跟上可选的空格,再跟上字段值,或者是一个CRLF(/r/n)。

注:https://blog.csdn.net/lishuoboy/article/details/84768748
CR:Carriage Return,对应ASCII中转义字符\r,表示回车

​LF:Linefeed,对应ASCII中转义字符\n,表示换行

​CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行

在这里插入图片描述
2.3.2 首部延续行

​ 将长的首部行分为多行可以提高可读性,多出来的每行前面至少要有一个空格或制表符(tab)。

2.4 实体的主体部分

​ HTTP报文的第三部分是可选的实体主体部分。实体主体是HTTP报文的负荷(payload)。就是HTTP要传输的内容。

​ HTTP报文可以承载很多类型的数字数据:图片、视频、HTML文档、软件应用程序、信用卡事务、电子邮件等。

That is all!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值