zoukankan      html  css  js  c++  java
  • 《HTTP 权威指南》笔记:第三章 HTTP 报文

    如果说 HTTP 是因特网的信使,那么 HTTP 报文就是它用来搬东西的包了.

    这一章讲述关于 HTTP 报文的相关知识,包括:

    1. HTTP 报文的三个组成部分
    2. 请求报文以及其各种功能
    3. 响应报文以及各种状态码
    4. HTTP 首部

    报文的三个组成部分

    报文有三个组成部分:

    1. 「起始行」start line:对报文进行描述
    2. 「首部」header: 包含 attributes (属性)
    3. 「主体」body: 包含内容,是可选的.

    需要注意:

    1. 在 start line 和 header 中,格式为 ASCII 文本,
    2. start line 中以{CRLF}这个行终止符作为结束,中间各项用空格分开.
    3. 在 header 中,可有包含多个或者没有首部,格式为:{name:}(一个可选的空格){value}{CRLF}
    4. 在 body 中,格式为二进制数据,或者为空.

    请求报文以及其各种功能

    请求报文的格式:

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

    <entity-body>

    其中:
    method 为 HTTP 的「方法」,是请求行的开头,用于告知服务器做些什么.
    version 为 HTTP 的「版本」,格式为: HTTP/<major>.<minor>,(分别为主要版本号和次要版本号)

    HTTP 的方法

    常见的 HTTP 的方法有:

    1. GET:从服务器中得到一份文档
    2. HEAD:从服务器中获取文档的 header
    3. PUT: 将请求的 body 部分放到服务器上
    4. POST: 向服务器发送需要处理的数据
    5. TRACE: 对经过代理服务器的报文进行跟踪
    6. OPTIONS:决定可以在服务器上可供使用的方法
    7. DELETE: 从服务器中删除一份文档

    下面介绍其中的 3、4、5 三种方法

    ③PUT 方法

    定义:与 GET 方法相反, PUT 方法会向服务器写入文档.
    功能:让服务器用请求的主体部分创建一个由所请求的 URL 命名的新文档. 

    ④POST 方法

    定义:与PUT 方法向服务器中存储数据有区别,POST 方法向服务器发送数据.
    功能:支持 HTML 中的表单,接受表单中的信息.

    ⑤TRACE 方法

    定义:在响应报文中携带它收到的原始请求报文
    功能:在客户端发起请求的时候,可能会穿过防火墙、网关、代理等等,因此可能修改原始的 HTTP 请求,因此,可通过 TRACE 方法观察请求报文是否被破坏或者修改.

    注意:返回的 TRACE 报文不包含 body 

    响应报文以及状态码

    响应报文的格式:

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

    <entity-body>

    其中:

    1. status-code: 「状态码」,其中第一位数字都用来描述状态的一般类别(“成功”,“出错”)
    2. reason-phrase: 「原因短语」,数字状态码的可读版本,不会被机器所处理,只对人类有意义.

    status-value 的种类

    1. 100~199:信息型状态码 
    2. 200~299:成功
    3. 300~399:重定向
    4. 400~499: 客户端错误
    5. 500~599: 服务器错误

    HTTP 首部

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

    首部的类型包括:

    1. 通用首部:可出现在请求报文中,也可出现在响应报文中,例如: Date: Tue, 30ct, 1997 02:16:03 GMT
    2. 请求首部
    3. 响应首部
    4. 实体首部:描述主体的长度和内容,或者资源自身,例如:Content-lenghth: 15040

    注意:
    如果值的内容会超过一行,那么就应该使用 Tab 键分为多行提高可读性,规则:多出的每行前面至少有一个空格或者 Tab

    请求首部

    定义:请求报文特有,用于说明是谁、什么在发送给请求、客户端的喜好和能力
    功能:为服务器提供一些额外信息
    例如:客户端希望得到什么类型的数据:Accept: */*

    种类:
    1. 信息型首部
    2. Accept 首部
    3. 安全请求首部
    4. 条件请求首部

    响应首部

    定义:响应报文特有,为客户端提供一些额外的信息.比如告知客户端在与那一版本服务器进行交互: Server: Tiki-Hut/1.0

    种类:

    1. 信息型首部
    2. 协商首部
    3. 安全响应首部





  • 相关阅读:
    GitLab → 搭建中常遇的问题与日常维护
    GitLab → 搭建私有的版本控制的托管服务平台
    神奇的 SQL 之 ON 和 WHERE → 扑朔迷离,好多细节!
    神奇的 SQL 之 ICP → 索引条件下推
    神奇的 SQL 之 WHERE 条件的提取与应用
    记一次线上问题 → 事务去哪了
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)
    python之pip安装mysql-python失败
    python之celery使用详解(二)
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10544972.html
Copyright © 2011-2022 走看看