• HTTP报文


    HTTP 报文是 HTTP 应用程序之间传递的格式化数据块,分为请求报文响应报文两类,两者的基本结构相同。

    HTTP 报文由起始行首部主体(可选)三个部分组成。其中,起始行和首部均以一个行终止序列(即空行,可写作CRLF,包括一个回车符、一个换行符)作为结束符。主体是可选的数据块,可以包含文本、二进制数据或者为空。

    起始行

    所有 HTTP 报文都已起始行作为开始,请求报文和响应报文的起始行的语法有所不同。

    请求报文起始行:

    又称为请求行,告诉服务器要做什么。

    语法:

      <method><request-URL><version>               如:GET www.google.com HTTP/1.0

      方法(method):常用的有

               ① GET:从服务器上获取资源

               ② POST:向服务器发送需要处理(更新)的数据

               ③ PUT:将请求主体存储于(写入)服务器上的指定路径(请求的 URL)

               ④ DELETE:请求服务器删除资源,但无法保证被执行,因为服务器可以在不通知客户端的情况下撤销请求

               ⑤ HEAD:从服务器获取资源首部,必须确保与 GET 请求返回的首部完全相同

               ⑥ OPTIONS:确定服务器可以执行的方法;使客户端不同实际访问资源就能判断访问资源的最优方法。

               ⑦ TRACE:对可能经过代理服务器的报文进行跟踪

       其中 GET 和 HEAD 方法被认为是安全的,因为这两种请求不会在服务器上产生什么结果。

    响应报文起始行:

    又称为响应行,告诉客户端发生了什么。

    语法:

    <version><status><reason-phrase>                如:HTTP/1.0 200 OK

      状态码(status-code):数字状态码,便于程序进行差错处理;每个状态码第一位数字都用于描述状态的一般类型。其中

          100-199:表示信息提示,100-101 已被定义

               100 Continue 表示服务器收到了请求的初始部分,请客户端继续。一般当客户端需要发送一个大实体或判断服务器能否处理实体时,可以在首部添加 Expect: 100 Continue。如果客户端不需要发送实体,就不应该发送该首部字段。

          200-299:表示成功,200-206 已被定义

               200 OK 请求成功,主题包含所请求的资源。

          300-399:表示资源被移走,300-305、307 已被定义

               301 Moved Permanently 永久重定向;

               302 Found 临时重定向(HTTP/1.0);

               303 See Other 临时重定向(HTTP/1.1);

               304 Not Modified 所请求资源未被修改,使用缓存资源;

               307 Temporary Rederect 与 301 类似(HTTP/1.1);

          400-499:表示客户端请求出错,400-415 已被定义

               401 Unauthorized 客户端在获取资源的访问权之前,对自己进行认证;

               403 Forbidden 请求被服务器拒绝,通常在服务器不想说明拒绝原因时使用;

               404 Not Found 请求的资源不存在;

               405 Method Not Allowed 请求中带有所请求 URL 不支持的方法;

               406 Not Acceptable 服务器不存在客户端可接受的与请求 URL 匹配的资源;

          500-599:表示服务器出错,500-505 已被定义

               500 Internal Server Error 服务器发生错误;

               501 Not Implemented 请求超出服务器的能力范围(如使用服务器不支持的请求方法);

               503 Service Unavalable 服务器暂时无法为请求提供服务,但将来可以;

               504 Gateway Timeout 响应超时,来自网关或代理;

               505 HTTP Version Not Supproted 请求使用了服务器无法或不愿支持的协议版本;

      原因短语(reason-phrase):以文本形式描述操作状态;便于人们理解,因此只对人类有意义(一般程序只检查状态码)

    首部

    为报文添加一些附件信息;本质上是一些名/值对列表。首部分为:

      通用首部:

        缓存首部:Cache-Control、Pragma

      请求首部:

        Accept首部:Accept、Accept-Charset、Accept-Encoding、Accept-Language、TR

        条件首部:Expect、If-Match、If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match

        安全首部:Authorization、Cookie、Cookie2

        代理首部:Max-forward、Proxy-Authorization、Proxy-Connection

      响应首部:

        信息性首部:Age、public...

        安全首部:Proxy-Authenticate、Set-Cookie、Set-Cookie2

      实体首部:

        信息性首部:Allow、Location

        内容首部:Content-Type、Content-length、Content-Language

        缓存首部:ETag、Expires、Last-Modified

      扩展首部。

    主体

    HTTP 要传输的内容,可以为图片、视频、HTML 文档、软件应用程序等。

    参考:HTTP 权威指南

  • 相关阅读:
    C 语言编程经典 100 例
    visual studio.net已检测到指定的web服务器运行的不是asp.net1.1版。无法运行asp.net web应用程序
    如何编译及运行java
    VBScript 函数集
    SQL SERVER定时作业的设置方法
    显示桌面按钮不小心被删,有什么办法找回?
    随机抽取n个记录的SQL
    打开项目时提示如下错误:Visual Studio .NET 无法创建应用程序 。问题很可能是因为本地 Web 服务器上没有安装所需的组件
    简单的数据库连接
    ASP中各种数据库连接代码
  • 原文地址:https://www.cnblogs.com/xxhuan/p/6096182.html
Copyright © 2020-2023  润新知