HTTP报文

这是看 HTTP权威指南 的笔记

HTTP报文

想要了理现今的因特网,就要了解http协议。想要深入了解http协议, 怎能不看一下http报文?

相关工具

在介绍http报文之前,先介绍查看http报文的工具

  • 如果是firefox用户,可以用Live HTTP headers查看http报文
  • 如果是chrome用户, 可以使用Http headers等插件,达到同样的效果

报文流

HTTP报文是在HTTP应用程序之间发送的数据块. 这些数据块以一些文本形式的元信息开头

报文组成部分

报文由起始行,首部和主体三部分组成

以下是报文的一个示例

组件 示例
起始行 HTTP/1.0 200 ok
首部 Content-type: text/plain
content-length: 19

主体 Hi! I'm a message!

起始行和首部就是由行分隔的ASCII文本.每行都以一个由两个字符组成的行终止序列作为结束. 其中包括一个回车符和一个换行符. 这个行终止序列可以写做CRLF

报文的语法

所有的HTTP报文都分为两类:请求报文(request message)

响应报文(response message)

请求报文的格式如下

						  
						

						
					

响应报文的格式如下

						  
						

						
					

下面对各部分简要描述

  • 方法(method)

    客户端希望服务器对资源执行的动作.是一个单独的单词如GET,POST

  • 请求URL(request-URL)

    命名了请求的资源的URL路径组件

  • 版本(version)

    报文的HTTP版本, 一般是HTTP/主版本号.次版本号,如HTTP/1.1

  • 状态码(status-code)

    三位数字描述了请求过程所发生的情况

  • 原因短语(reason-phrase)

    数字状态码的可读版本

  • 首部(header)

    可以有零到多个首部. 每个首部由一个名字,后面跟着一个冒号, 然后是一个可选的空格,接着一个值,最后是一个CRLF.首部由一个空行(CRLF)结束

  • 实体的主体部分(entity-body)

    实体的主体部分包含一个由任意数据组成的数据块

起始行

起始行说明了HTTP报文的作用:请求报文的起始行说明了要做些什么, 响应报文的起始行说明了发生了什么

  1. 请求行

    请求报文的起始行,或称为请求行, 包含一个方法和一个请求URL, 还有一个HTTP的版本

  2. 响应行

    响应报文的起始行,或称为响应行, 包含了HTTP版本, 状态码和原因短语

  3. 方法

    请求的起始行以方法作为开始,时方法用来告知服务器要做些什么. 以下是常用的HTTP方法

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

    状态码用来告诉客户端发生了什么事情, 以下列出了状态码的分类

    整体范围 已定义范围 分类
    100~199 100~101 信息提示
    200~299 200~206 成功
    300~399 300~305 重定向
    400~499 400~415 客户端错误
    500~599 500~505 服务器错误

    下面常见的状态码

    状态码 原因短语 含义
    200 OK 成功.请求的所有数据都在响应主体上
    401 Unauthorized(未授权) 需要输入用户名和密码
    404 Not Found(未找到) 服务器无法找到所请求URL对应的资源
  5. 原因短语

    原因短语是响应行的最后一个组件. 应用程序开发者把原因短语传给用户,用以说明请求期间发生了什么情况

  6. 版本号

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

    注意:版本号不会被当作小数来处理, 比如HTTP/2.22就比HTTP/2.3的版本高

首部

HTTP的首部实质上是一些名/值的列表,比如,下面的首部会向Content-length首部赋值为19

Content-length: 19

以下是一些常用的首部

首部实例 描述
Date: Tue,30oct 1997 02:16:03 GMT 服务器产生响应的日期
Content-length: 1024 实体的主体部分包含了1024字节的数据
Content-type: image/gif 实体的主体部分是一个GIF的图片
Accept: image/gif, image/jpeg, text/html 客户端可以接收GIF图片和JPEG图片以及HTML

实体

HTTP报文的第三部分实体是可选的. 实体的主体是HTTP协议要传输的内容

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

转载请注明出处,请忽用于任何商业用途--nothi

你可能感兴趣的:(http协议)