由 cookie 与 session 引起的思考

2018-10-19 20:31:58 +08:00
 pinews
之前在搜索 cookie 相关问题的时候,不时跳出来“ cookie 与 session 有什么不同”的问答跳出来,看了几篇问答,觉得很纳闷,比如第一句就是“ HTTP 请求本是无状态的”。
那么问题来了,HTTP 为什么是无状态的,HTTP 为什么不做成有状态的,HTTP 能不能做成有状态的,有没有不是 HTTP 却是有状态的?
现在的 google chrome 开始保存密码了,还有其他保存密码的服务?早干嘛去了?
早在 HTTP 之前,域名服务就出来了,为什么没有针对个人的 ID 验证协议,还有现在把加密服务带进了 HTTP,是不是歧视?后来引进各种措施是不是亡羊补牢。

我认为所谓的无状态 HTTP 协议和 ipv4 一样,是一种先天狭隘考虑不周的表现。之所以这样想是因为(警告:下文可能引起一些人不适)

----------------------------------------------------------------------------------------------------------------------------------------
大家知道,美国是没有身份证的,英国的身份证制度也是两立两废,国家有意建立身份证制度,但一些人很愤怒,巴拉巴拉,当然了也不是只有中国有身份证,非要用“先进老外”例子的话有德国以色列比利时等。
6550 次点击
所在节点    程序员
85 条回复
zhzer
2018-10-19 20:45:53 +08:00
tcp ftp 这些协议就是有状态的,天生就这么设计

http 设计成无状态的,自然就是因为当时 http 就是所有协议中的一支
本来就干它自己的事就行了,站在网关发发传单(游泳健身,了解一下
谁能想到,那群专家 过早抽象 过早优化,冗余太多别的协议用的场景越来越少

也就导致了 session cookie 的需求
https 同理
pinews
2018-10-19 20:53:47 +08:00
@zhzer 终于钓上一只鱼,可是没太理解我的意思,既然后来补上了 cookie,https,不如早点设计 http 身份证
opengps
2018-10-19 20:57:21 +08:00
这种问题太难解释,只能笼统回答一句~存在就有道理!
AlisaDestiny
2018-10-19 20:57:25 +08:00
同理,你可以说乔布斯考虑不周,为什么不在一开始就设计成现在的 iPhone X,而要从 iPhone1 开始。
任何东西都是从无到有一步步摸索过来的,想一步登天是不可能的。
fcten
2018-10-19 21:01:52 +08:00
HTTP 协议之所以是无状态的,是因为它被创造出来的时候,对于它所要解决的问题,无状态是最好的选择。而没有人能预料到几十年后它会这么流行。

历史唯物主义教育我们,评价一个事物,要结合当时的时代背景。所以秦始皇是先进的,袁 /世 /凯是落后的。
PulpFunction
2018-10-19 21:06:56 +08:00
谁能知道现在这么多人有电脑,居然还有爬虫啥的…

靠网络赚钱

天下大同就是想想
pinews
2018-10-19 21:12:49 +08:00
@opengps
@AlisaDestiny
@fcten 不是一步登天,而是现在的账号都被大公司垄断了啊,就像古代的农民被限制在一片土地上,无法自由的迁徙,就像局域网,如果有统一身份验证,所有的网站只需要同意接入,就不需要现在这么多的注册。
clino
2018-10-19 21:18:24 +08:00
没看到有状态的理由
你可以设想一下有状态是什么样的,web 服务器软件的复杂度会不会变高,注意不是说应用服务器
azh7138m
2018-10-19 21:19:11 +08:00
统一的数据管理谁来提供呢?
谁来决定一个公司可以看到多少你的数据呢?
lhx2008
2018-10-19 21:20:19 +08:00
有状态不一定是最优解,SSH 这种真的好吗?真的安全吗?状态能保存一年吗?还不是要一个本地保存的机制。
pinews
2018-10-19 21:20:31 +08:00
@clino 带了 cookie 就是有状态的其中一种啊,有什么麻烦的,不过 cookie 是网站发给浏览器的,大多时候,你都无法操控
pinews
2018-10-19 21:23:39 +08:00
@azh7138m 不是一个公司,而是一种协议,就叫个人名称验证服务协议吧( Personal Name Systeam )
rogwan
2018-10-19 21:25:05 +08:00
当时设计的 http 和 ipv4 明显看的出来,这就是一个实验室玩玩的,那知道以后会走出实验室,全世界的人都会用。除了那个牛逼的不得了的 god 之外,人类永远不会有“完美”的设计。
pinews
2018-10-19 21:27:40 +08:00
@rogwan 亡羊补牢啊,可是现在亡羊补牢不到点上,是我想法有问题,还是被利益集团垄断了?
0xABCD
2018-10-19 21:36:33 +08:00
早期的计算机是稀有物品,没想到飞入寻常百姓家了,所以早期的设计完全没错,只是不够完美。你这是站在上帝视角看待问题,看问题还是要看当时的背景和局限性。
AlisaDestiny
2018-10-19 21:41:16 +08:00
@pinews
在国外有呀,Google 账号就可以登陆大多数网站,但是在国内用不了。所以 QQ,wechat 就出来的。
5bGx5Lit5peg6ICB6JmO77yM54y05a2Q56ew6Zy4546L44CC
sagaxu
2018-10-19 21:49:30 +08:00
没有身份证,怎么证明你是你?驾照也是身份证的一种。发达国家也有户口,只不过不捆绑利益,可以随便迁移,登记一下就行。
Keller0
2018-10-19 22:09:02 +08:00
@rogwan 怎么看到他们是玩玩的,和军方搞合作能让你玩?
pinews
2018-10-19 22:12:32 +08:00
关于 用户认证系统 协议的设想

相比域名系统,个人用户验证明显不足,虽然引入 cookie 等,但复杂安全性差,且仅为网站与浏览器通信,个人能做的仅仅是在网站上填写资料,其实是网站霸权。现在如 chrome 以及 qq 微博 支付宝一键登录,其实更是大网站超级霸权。对小网站也不公平。

客户端 由操作系统和浏览器协同支持,由用户名,密码,安全码三部分组成,其中用户名如域名一般全球唯一。登陆后生成加密字符串,连接不同网站时,在生成不同的加密字符串,以此注册登录,服务器脚本和数据库由标准格式接入,只要网站支持用户验证系统,都可以一键接入,省力,免除网站霸权。

用户修改密码后,自动通知所有网站,修改加密字符串。

网站可以主动通知客户端。

可以多点登陆,可以单独修改网站加密字符串,可以解绑等。
loqixh
2018-10-19 22:17:01 +08:00
因为 http 设译用来做静态网页的, js 都是后面才有, 鬼知道后面会用来做这么多功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX