我想要澄清HTTPS是有状态还是无状态?这是关于我构建的RESTful API。我们最初使用的是HTTP。由于HTTP本质上是在无状态的TCP / IP上工作,因此HTTP是无状态的,但是当我切换到HTTPS时,我的API变为有状态。我想知道我的结论是HTTPS是有状态的。是对还是不对? 我使用名为webMethods的中间件工具创建了我的API。 感谢
答案 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是一个有状态协议,因为它包含会话标识符字段。这由服务器生成,最初用于标识与所选客户端的会话。