zoukankan      html  css  js  c++  java
  • HTTP 之 报文学习

    HTTP报文

    一、      报文流

    HTTP报文是在HTTP应用程序之间发送的数据块,这些数据块以文本形式在客户端、服务器和代理之间流动。报文会像河水一样向下游流动,所有报文的发送者都在接受者的上游。

    二、      报文的组成部分

    报文是简单的格式化数据块,或包含客户端的请求或服务器的响应。

    1.      三个组成部分:起始行、首部、主体

    HTTP/1.0 200 OK                        起始行             [对报文进行描述]

    Content-type: text/plain          首部                  [报文的属性]

    Content-length                           首部                  [报文的属性]

                                                            [空行]               [在主体与起始行、首部之间空一行]

    This is a msg!                              主体                  [可选的报文数据主体]

    起始行和首部是以行分割的ASCII文本,每行都以两个字符作为结束(即:回车符+换行符)

    报文的主体部分是一个可选的数据块,可以包含文本、二进制数据也可以为空

    如图:

    2.      报文的语法格式:

    请求报文:

    <请求方法>  <请求的URL>  <HTTP版本>

    <请求首部>

    <请求的主体部分 >

    响应报文:

    <HTTP版本>  <状态码>  <原因短语 >

    <响应首部>

    <响应的主体部分>

    简要描述

             请求方法:     客户端需要服务器执行的操作,如:GET、HEAD、POST

             请求URL:     请求资源的URL路径,完整的URL

             HTTP版本:   报文所使用的HTTP版本,格式为: HTTP/主版本号.次要版本号,如HTTP/1.1

             原因短语:     状态码的可读版本,如 HTTP/1.0 200 OK,其中“OK”就是原因短语

             首部部分:     一个报文可以有零个或多个首部,每个首部都包含一个名字,后面跟个冒号,然后是一个可选的空格在接着一个值,最后是一个回车换行。如:Server: BWS/1.0

             主体部分:     任意数据组成的数据块,可选。偶尔报文只是以一个回车换行[CRLF]结束

    三、      报文的起始行

    所有的HTTP报文都以一个起始行开始,请求报文的起始行说明要做些什么,响应报文的起始行说明发生了什么

    • 请求报文请求服务器对资源进行一些操作,其起始行称为请求行,其包含一个方法、一个URL和一个HTTP版本。

    比如:GET /123.txt HTTP/1.1 代表请求方法为GET,请求URL为/123.txt ,版本协议为 HTTP/1.1

     

    • 响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。其起始行成文响应行,包含了响应报文使用的HTTP版本、数字状态码和一个文本形式的原因短语。

    比如:HTTP/1.1 200 OK 代表响应报文使用HTTP/1.1协议,状态码为200表示成功,原因短语为OK(表示之前的请求是成功的)

    1.      方法

    方法

    描述

    包含报文主体

    GET

    从服务器获取一份文档

    HEAD

    只从服务器获取文档的首部

    POST

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

    PUT

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

    TRACE

    对经过的代理服务器传送到服务器上去的报文进行追踪

    OPTIONS

    获取在服务器上可以执行哪些方法

    DELETE

    从服务器上删除一份文档

    PS:并不是所有的服务器都实现上表中的7种方法,个别WEB服务器可能还会实现自己的请求方法,称为扩展方法。

    2.      状态码

    整体范围

    已定义的范围

    分类

    100 ~ 199

    100 ~ 101

    信息提示

    200 ~ 299

    200 ~ 206

    成功

    300 ~ 399

    300 ~ 305

    重定向

    400 ~ 499

    400 ~ 415

    客户端错误

    500 ~ 599

    500 ~ 505

    服务器错误

    四、      报文的首部

    HTTP首部字段向请求和响应报文中添加一些附加信息。本质上是 名/值 对的列表。分为通用首部、请求首部、响应首部、实体首部、扩展首部。

    常见的首部实例:

     

    首部实例

    描述

    Date: Wed, 27 Mar 2013 14:36:55 GMT

    服务器产生响应的日期

    Content-Length: 48

    实体的主体部分包含数据的长度

    Content-Type: image/jpeg

    实体的主体部分是一个 JPEG图片

    Accept: image/gif, image/jpeg, text/html

    客户端可接收GIF、JPEG图片及HTML

    五、      报文的主体

    HTTP报文的第三部分是可选额实体部分,实体的主体是HTTP报文的负荷,也就是HTTP要传输的内容。可以承载的类型数据:图片、视频、HTML稳定、软件应用程序电子邮件等…

  • 相关阅读:
    JS字符串去重
    svn回退到某一版本
    WebStorm格式化代码4个空格设置
    DevExpress中 的DataGrid每一行根据其类型显示控件的种类
    各大系统刷新DNS缓存方法
    Kali Linux中前十名的Wifi攻击工具
    CentOS远程执行漏洞
    判断是否移动端的几种方法
    笔记
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/ryhan/p/2985752.html
Copyright © 2011-2022 走看看