HTTPS有状态还是无状态?

时间:2012-06-16 22:20:35

标签: https

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

5 个答案:

答案 0 :(得分:16)

TLS / SSL是有状态的。 Web服务器和客户端(浏览器)缓存会话,包括加密密钥以提高性能,并执行执行密钥交换请求。

HTTP 1没有状态。 HTTP / 2确实有一些stateful components,但“应用层”仍然是无状态的。

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

附加说明:Cookie和其他有状态机制是后来在单独的RFC中定义的添加内容。它们不是原始HTTP/1.0规范的一部分,并且未在HTTP 1.1 RFC中提及。 HTTP 1被认为是无状态的,尽管在实践中我们使用标准化的有状态机制。 HTTP / 2在其标准中定义了有状态组件,因此是有状态的。特定的HTTP / 2应用程序可以使用HTTP / 2功能的子集来维护无状态。

答案 1 :(得分:8)

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

  

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

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

答案 2 :(得分:3)

HTTPS是通过安全连接的HTTP。

HTTP比连接更高级别。

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

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

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

我相信这是一个接近场景背后的图像。但我不是专家。我希望它有所帮助。

答案 3 :(得分:0)

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

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

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

JWT令牌仅在HTTPS上使用,而不在HTTP中使用,因为连接是在HTTPS中加密的,因此任何人都无法拦截。

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

答案 4 :(得分:-1)

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