【问题标题】:Is HTTPS Stateful or Stateless?HTTPS 是有状态的还是无状态的?
【发布时间】:2012-06-19 12:24:18
【问题描述】:

我想了解一下 HTTPS 是有状态的还是无状态的?这是关于我构建的 RESTful API 的。我们最初使用的是 HTTP。由于 HTTP 本质上是在无状态的 TCP/IP 上工作的,因此 HTTP 是无状态的,但是当我切换到 HTTPS 时,我的 API 变得有状态。我想知道我的结论是否 HTTPS 是有状态的。正确与否? 我使用名为 webMethods 的中间件工具创建了我的 API。 谢谢

【问题讨论】:

标签: https


【解决方案1】:

TLS/SSL 是有状态的。网络服务器和客户端(浏览器)缓存会话,包括加密密钥以提高性能,并且为每个请求。

HTTP 1 没有状态。然而 HTTP/2 定义了许多stateful components,但“应用层”仍然保持无状态。

TL;DR:传输管道 (TLS) 是有状态的,原始 HTTP 不是。

附加说明:Cookie 和其他有状态机制是在单独的 RFC 中定义的后续添加。尽管在HTTP 1.1 RFC 和 RFC 2617 中定义了缓存和 HTTP 身份验证等其他有状态机制,但它们不是原始 HTTP/1.0 规范的一部分。据说 HTTP 1 是无状态的,尽管在实践中我们使用标准化的有状态机制。 HTTP/2 在其标准中定义了有状态的组件,因此是有状态的。特定的 HTTP/2 应用程序可以使用 HTTP/2 功能的子集来保持无状态。

抛开理论不谈,实际上,您在日常生活中使用有状态的 HTTP。

【讨论】:

    【解决方案2】:

    HTTP 和 HTTPS 都是无状态协议。 HTTPS 中的 S 代表 Secure,它指的是通过加密的 SSL/TLS 连接使用普通 HTTP。

    使用 JWT 令牌或使用 cookie 建立会话的传统方式帮助我们克服 HTTP 是无状态协议的问题,因为它使服务器能够验证客户端的身份,因此您不需要每次单击链接以在网页上导航时登录。

    因此,例如,当您登录银行的网站时,它只要求您输入一次登录详细信息。登录后,您无需在导航到帐户设置页面时重新输入它们,这是因为银行网站能够使用 JWT 令牌验证您的身份。

    JWT 令牌只用在 HTTPS 上,不能用在 HTTP 上,因为连接是用 HTTPS 加密的,所以不能被任何人截获。

    因此,HTTP 和 HTTPS 都是无状态协议,但 JWT Tokens 为它提供了一种解决方法。

    【讨论】:

      【解决方案3】:

      HTTPS 是基于安全连接的 HTTP。

      HTTP 比连接更高级。

      连接到 Web 服务器时,您的连接(可能总是?)是 TCP/IP 类型的。因此,如果您通过 HTTPS 访问网站,您的 TCP/IP 连接将被加密。

      服务器和/或客户端发送的数据没有被服务器和/或客户端加密。它只是通过 HTTP 发送,但这次使用的是通过 TCP/IP 的连接,该连接通过加密保护。

      如果数据是车辆,而连接是高速公路,那么: - 使用 HTTP 就像在高速公路上行驶的车辆,每个人都可以看到它们; - 使用 HTTPS 也一样,但车辆会通过隧道或任何阻止不在高速公路上的人看到它们的东西。您可以确定有交通,但您无法识别车辆,除了隧道的两端。

      我相信这是一个接近幕后发生的事情的图像。但我不是专家。我只是希望它有所帮助。

      【讨论】:

        【解决方案4】:

        我相信 HTTPS 是一个有状态的协议,因为它包含会话标识符字段。它最初由服务器生成,用于识别与所选客户端的会话。

        【讨论】:

        • 请在您的答案中提供链接。状态是一个高度讨论的话题,并且链接很多。
        • 在阅读了最受好评的答案后,我仍然持怀疑态度。虽然我知道我错了,但在我看来,HTTPS 是有状态的是完全有道理的,因为客户端/服务器建立连接、更改密钥然后启动数据传输......我错过了什么?
        【解决方案5】:

        HTTPS 中的 S 与传输有关,而不是协议。 HTTP 协议的语义对于 HTTPS 保持不变。正如the article about HTTPS on Wikipedia 所说,

        严格来说,HTTPS 并不是一个单独的协议,而是指在加密的 SSL/TLS 连接上使用普通 HTTP。

        HTTP 协议在设计上是无状态的,并不是因为它最常通过 TCP/IP 使用(例如,没有什么能阻止您使用 HTTP over UDP)。

        【讨论】:

          猜你喜欢
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 2017-07-16
          • 1970-01-01
          • 2014-05-07
          • 2021-11-07
          • 2021-12-08
          • 1970-01-01
          相关资源
          最近更新 更多