• http协议(二、报文格式)


    一、请求报文

            一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

    请求报文请求报文
    请求报文请求报文实例

    1. 请求行

            请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 HEAD、GET、POST、PUT、PATCH、DELETE、OPTIONS、TRACE、CONNECT等。最常用的是GET、POST。

    1)HTTP/1.0

           HTTP/1.0支持:GET、POST、HEAD三种HTTP请求方法。

    2)HTTP/1.1

           HTTP/1.1是当前正在使用的版本。该版本默认采用持久连接,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

           HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法。

           另外用于特定请求的URL方法还有:

           PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别(对put方法的补充, 局部更新)。
           MOVE: 请求服务器将指定的页面移至另一个网络地址。
           COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
           LINK: 请求服务器建立链接关系。
           UNLINK: 断开链接关系。
           WRAPPED:允许客户端发送经过封装的请求。
           Extension-mothed:在不改动协议的前提下,可增加另外的方法。

    2. 请求头(查看详情

            请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,常见的请求头有:

    • User-Agent : 产生请求的浏览器类型
    • Accept : 客户端希望接受的数据类型
    • Content-Type:发送端发送的实体数据的数据类型
    • Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
    • 等等

    3. 空行

            最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

    4. 请求体(请求正文)

            请求体不在 GET 方法中使用,而是在POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求体相关的最常使用的是请求体类型 Content-Type 和请求体长度 Content-Length;

    一、请求报文

            HTTP响应也由四个部分组成,分别是:状态行、消息报头(响应头)、空行和响应正文。如下图:

    请求报文响应报文
    响应报文实例响应报文实例

    1. 状态行

            状态行格式:HTTP-Version Status-Code Reason-Phrase CRLF

            其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    • 1xx:指示信息--表示请求已接收,继续处理。
    • 2xx:成功--表示请求已被成功接收、理解、接受。
    • 3xx:重定向--要完成请求必须进行更进一步的操作。
    • 4xx:客户端错误--请求有语法错误或请求无法实现。
    • 5xx:服务器端错误--服务器未能实现合法的请求。

            常见状态代码、状态描述的说明如下。

    • 200 OK:客户端请求成功。
    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
    • 401 Unauthorized:请求未经授权。
    • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
    • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
    • 500 Internal Server Error:服务器发生不可预期的错误。
    • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

    2. 响应头(查看详情

            响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。常见的响应头字段及其含义:

            Allow:服务器支持哪些请求方法(如GET、POST等)。

            Content-Encoding:文档的编码(Encode)方法。

            Content-Length:表示内容长度。

            Content- Type:表示后面的文档属于什么MIME类型。

            Date:当前的GMT时间

            等等...

    3. 空行

            同请求报文中的空行

    4. 响应体

            1). 前后端分离: 响应正文是一个json

            2). 后端渲染: 响应正文是一个html文档

    漫思
  • 相关阅读:
    《Java编程思想》笔记 第二十章 注解
    《Java编程思想》笔记 第十九章 枚举类型
    《Java编程思想》笔记 第十七章 容器深入研究
    一个关于Java 多线程问题的知识点
    Tomcat 部署2个项目,只有一个可以访问的解决方案
    抄书(Copying Books, UVa 714)
    Checker Challenge
    Case of the Zeros and Ones
    Tom and paper
    不规则棋盘问题
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/13411056.html
Copyright © 2020-2023  润新知