HTTP有HTTP cookie。cookie允许服务器跟踪用户状态、连接数、最后一个连接等。

HTTP具有持久连接(Keep-Alive),可以从同一个TCP连接发送多个请求。


当前回答

如果协议HTTP被指定为状态全协议,浏览器窗口将使用单一连接与web服务器通信,以便向web应用程序发送多个请求。这使浏览器窗口有机会长时间地连接浏览器窗口和web服务器,并使它们长时间处于空闲状态。这可能会导致在客户端大部分连接空闲的情况下,web服务器的连接达到最大值。

其他回答

从维基百科:

HTTP is a stateless protocol. A stateless protocol does not require the server to retain information or status about each user for the duration of multiple requests. But some web applications may have to track the user's progress from page to page, for example when a web server is required to customize the content of a web page for a user. Solutions for these cases include: the use of HTTP cookies. server side sessions, hidden variables (when the current page contains a form), and URL-rewriting using URI-encoded parameters, e.g., /index.php?session_id=some_unique_session_code.

What makes the protocol stateless is that the server is not required to track state over multiple requests, not that it cannot do so if it wants to. This simplifies the contract between client and server, and in many cases (for instance serving up static data over a CDN) minimizes the amount of data that needs to be transferred. If servers were required to maintain the state of clients' visits the structure of issuing and responding to requests would be more complex. As it is, the simplicity of the model is one of its greatest features.

因为无状态协议不要求服务器在多个请求期间保留每个通信伙伴的会话信息或状态。

HTTP是一种无状态协议,这意味着一旦事务结束,浏览器和服务器之间的连接就会丢失。

HTTP是无连接的,这是HTTP是无状态协议的直接结果。服务器和客户端只有在当前请求期间才能相互了解。后来,他们都忘了对方。由于协议的这种性质,无论是客户端还是浏览器都不能在网页上的不同请求之间保留信息。

即使多个请求可以通过同一个HTTP连接发送,服务器也不会为它们通过同一个套接字到达附加任何特殊含义。这完全是一个性能问题,目的是尽量减少为每个请求重新建立连接所花费的时间/带宽。

就HTTP而言,它们仍然是独立的请求,并且必须包含足够的信息来满足请求。这就是“无国籍”的本质。如果没有服务器所知道的一些共享信息(在大多数情况下是cookie中的会话ID),请求将不会相互关联。

什么是无状态?

一旦发出请求并将响应呈现回客户端,连接将被丢弃或终止。服务器将忘记所有关于请求者的信息。

为什么无状态? ?

web选择使用无状态协议。这是一个天才的选择,因为web的最初目标是允许文档(网页)被提供给非常大的用户。人们使用非常基本的硬件作为服务器。

维护长时间运行的连接将非常耗费资源。

如果web选择了有状态协议,那么为了维护访问者的连接,服务器上的负载将会增加。