Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Web 是有状态的!

  HTTP 本身是无状态的,而 Web 基于 HTTP 通信,那么 Web 就是无状态的?这个显然是个伪命题。HTTP 确实是无状态的,但浏览器并不会把整个 HTTP 的控制权都交给前端程序,每个请求都会被浏览器加入一些奇怪的的东西,所以 Web 应该是有状态的。
  我对「状态」的认知是,只要服务器程序可以在客户端程序不参与的情况下识别客户端就是有状态的。说 HTTP 无状态是因为 HTTP 响应的 set-cookie 头需要客户端参与才能保存下来才能在下一个请求中带上去,所以需要客户端参与才能做到被服务器识别。但是这个过程已经被浏览器封装,前端程序无法访问 set-cookie 这种东西,甚至还有专门用于隔离客户端程序的 HTTP Only。那么服务器就可以在客户端程序不知情的情况下对其设置状态标识,所以 Web 就属于有状态的。
  当我刚接触 RESTful 这个概念的时候对它也是如痴如醉。我喜欢无状态的 API,因为无状态可以让接口间的耦合降到最低。一开始使用 RESTful 做用户无关的 API 并没有什么问题,因为需求都是状态无关的(比如这个博客程序根本连用户系统都没有,所以无状态妥妥地)。但真正无状态的业务是非常少的,所以才会有 Cookie 这种东西的诞生。
  总之,Web 是有状态的。使用 RESTful 来设计 Web 到最后总是会带入一堆一点都不 RESTful 的概念进去。从 RESTful 这场闹剧中我学到了很多东西,之后可能会尝试性地造一些奇怪了轮子(然而一直没什么时间造)。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^