2009-12-21 26 views
4

我们究竟如何为http添加状态而没有我们当前使用的涉及查询字符串,隐藏字段,cookie和会话状态的黑客替代方法?如何实现有状态的HTTP协议?

+0

+1有趣的问题 – 2012-10-18 21:13:09

回答

6

它不会。 HTTP中的基本假设之一是客户端正在请求页面,并且页面或多或少是静态的(可能有一些额外的参数,cookie等)。每个请求都是独特而独立的,并且协议并非真的是被设计为有状态 - 这大大简化了客户端和服务器的实现。

跟踪状态是一个更高级别的功能 - 这是留给服务器或客户端分开。

由于某种原因,这些解决方法是骇人听闻的:HTTP意味着主要是无状态的。 “有状态的”HTTP是不可能的,因为它不再是真正的HTTP,它完全不同。

+0

微软NTLM依赖于HTTP状态,即要求客户重复使用身份验证和后续请求相同的连接。这是一个可怕的,可怕的想法,它违反了HTTP/1.1 RFC,它使代理变得不可能。总之,不要走这条路。它会导致痛苦和痛苦。 – Saustrup 2017-01-30 12:40:57

2

有状态的HTTP可能看起来很像FTP,telnet或IM。基本上有状态意味着我们正在跟踪连接丢失时丢失(暂时或永久)的连接状态数据。

HTTP最初是作为一种无状态协议来降低传输数据的复杂性,并允许客户端根据需要处理请求资源,而不是假定它们都是当前会话的一部分(如FTP )。

-1

这并不直接回答你的问题(其他人已经这样做),但如果你正在寻找如何将这种双向通信部分将工作,你可能会感兴趣的HTML5 Web Sockets API