zoukankan      html  css  js  c++  java
  • HTTP协议浅谈

    一、介绍:

    http 即 超文本传送协议  (Hypertext transfer protocol) 是通过因特网传送万维网文档的数据传送协议。
    今天普遍使用的一个版本——HTTP 1.1。

    HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

    默认HTTP的端口号为80,HTTPS的端口号为443。

    二、HTTP事务:

    HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

    一次HTTP操作称为一个事务,一般分4步:

    ①首先客户机与服务器需要建立连接;②客户机发送一个请求给服务器;③服务器接到请求后,给予相应的响应信息

    ④客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

    三、请求报文:由三部分组成,分别是:请求行、消息报头、请求正文。

    例如:

       1、请求行:

    请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

    HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT:

    GET 请求获取Request-URI所标识的资源

    POST 在Request-URI所标识的资源后附加新的数据

    HEAD 请求获取由Request-URI所标识的资源的响应消息报头

    PUT 请求服务器存储一个资源,并用Request-URI作为其标识

    DELETE 请求服务器删除Request-URI所标识的资源

    TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断

    CONNECT 保留将来使用

    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求。

      2、请求头部:

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

    User-Agent:产生请求的浏览器类型。

    Accept:客户端可识别的内容类型列表。

    Host:请求的主机名和端口号。

    Accept-charset:客户端能够处理的字符集。

    Accept-encoding:客户端能够处理的编码方案。

    Accept-language:客户端能够接受的语言。

    Authorization:客户端具有何种准许。

    Date:当前日期。

    Upgrade:指明优先使用的通信协议。

      3、请求正文(略)。

    四、响应报文。

      HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

    1、状态行格式如下:
    HTTP-Version Status-CodeReason-PhraseCRLF
    其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。

    1**:提示信息--表请求已接受,继续处理;

    100——客户必须继续发出请求

    101——客户要求服务器根据请求转换HTTP协议版本

    2**操作成功收到分析、接受

    200——交易成功
    201——提示知道新文件的URL

    202——接受和处理、但处理未完成

    203——返回信息不确定或不完整

    204——请求收到,但返回信息为空

    205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

    206——服务器已经完成了部分用户的GET请求

    3**:重定向--完成此请求必须进一步处理

    300——请求的资源可在多处得到

    301——删除请求数据

    302——在其他地址发现了请求数据

    303——建议客户访问其他URL或访问方式

    304——客户端已经执行了GET,但文件未变化

    305——请求的资源必须从服务器指定的地址得到

    306——前一版本HTTP中使用的代码,现行版本中不再使用

    307——申明请求的资源临时性删除

    4**:客户端错误--请求有语法错误或请求无法实现:

    400——错误请求,如语法错误

    401——未授权

    HTTP 401.1 - 未授权:登录失败

      HTTP 401.2 - 未授权:服务器配置问题导致登录失败

      HTTP 401.3 - ACL 禁止访问资源

      HTTP 401.4 - 未授权:授权被筛选器拒绝

    HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败

    402——保留有效ChargeTo头响应

    403——禁止访问

    HTTP 403.1 禁止访问:禁止可执行访问

      HTTP 403.2 - 禁止访问:禁止读访问

      HTTP 403.3 - 禁止访问:禁止写访问

      HTTP 403.4 - 禁止访问:要求 SSL

      HTTP 403.5 - 禁止访问:要求 SSL 128

      HTTP 403.6 - 禁止访问:IP 地址被拒绝

      HTTP 403.7 - 禁止访问:要求客户证书

      HTTP 403.8 - 禁止访问:禁止站点访问

      HTTP 403.9 - 禁止访问:连接的用户过多

      HTTP 403.10 - 禁止访问:配置无效

      HTTP 403.11 - 禁止访问:密码更改

      HTTP 403.12 - 禁止访问:映射器拒绝访问

      HTTP 403.13 - 禁止访问:客户证书已被吊销

      HTTP 403.15 - 禁止访问:客户访问许可过多

      HTTP 403.16 - 禁止访问:客户证书不可信或者无效

    HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效

    404——没有发现文件、查询或URl

    405——用户在Request-Line字段定义的方法不允许

    406——根据用户发送的Accept拖,请求资源不可访问

    407——类似401,用户必须首先在代理服务器上得到授权

    408——客户端没有在用户指定的饿时间内完成请求

    409——对当前资源状态,请求不能完成

    410——服务器上不再有此资源且无进一步的参考地址

    411——服务器拒绝用户定义的Content-Length属性请求

    412——一个或多个请求头字段在当前请求中错误

    413——请求的资源大于服务器允许的大小

    414——请求的资源URL长于服务器允许的长度

    415——请求资源不支持请求项目格式

    416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

    417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

    5**:服务器差差错--服务器未能实现合法的请

          HTTP 500 - 内部服务器错误

        HTTP 500.100 - 内部服务器错误 - ASP 错误

      HTTP 500-11 服务器关闭

      HTTP 500-12 应用程序重新启动

      HTTP 500-13 - 服务器太忙

      HTTP 500-14 - 应用程序无效

      HTTP 500-15 - 不允许请求 global.asa

      Error 501 - 未实现

          HTTP 502 - 网关错误

  • 相关阅读:
    20034 #917
    loj3066
    P5391
    Hive on spark和Hive on mr在处理orc格式表格时数据不一致问题探究
    解决自定义Spark的jar包提交到yarn上使用cluster模式执行时报错keberos用户找不到问题
    三个文件教你写一个命令行终端[electron实战]
    按钮点击防止双击
    uniapp-base64加密解密(不会中文乱码)
    Android Studio 2021.3.1 阿里云盘分享地址
    Oracle——创建多个实例(数据库)、切换实例、登录数据库实例
  • 原文地址:https://www.cnblogs.com/lianstyle/p/3736385.html
Copyright © 2011-2022 走看看