V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pinews
V2EX  ›  程序员

由 cookie 与 session 引起的思考

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

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

    ----------------------------------------------------------------------------------------------------------------------------------------
    大家知道,美国是没有身份证的,英国的身份证制度也是两立两废,国家有意建立身份证制度,但一些人很愤怒,巴拉巴拉,当然了也不是只有中国有身份证,非要用“先进老外”例子的话有德国以色列比利时等。
    第 1 条附言  ·  2018-10-20 13:48:28 +08:00
    向大家道歉,ip 地址可以当作带状态的,如果可以的话,个人也可以申请域名系统证明自己,也正是因为老美有充足的 ip 可用,cookie 才能成为一个可选项,不像国内 ip 短缺,除了 cookie 真的没法区分客户了,而域名系统是要钱的。

    不过现在,觉得个人验证系统大有可为啊,能不能让 HTTP 的 Cookie 把用户验证功能还给 HTTP 的 Authentication ?
    第 2 条附言  ·  2018-10-20 15:09:06 +08:00
    第二次增加留言,由于刚发帖啊想的不太明白,吐槽不太准确,又被一帮人带偏了打口水仗,当我想明白的时候,这不全算 HTTP 和老美的锅,在明白了前因后果后,而我的最终想法很美好,属于展望式的,很难实现,算结帖吧。
    第 3 条附言  ·  2018-10-20 18:04:27 +08:00
    新帖,统一个人网络身份认证设计思路,欢迎大家批评指正。
    https://www.v2ex.com/t/499450
    85 条回复    2018-10-22 09:26:06 +08:00
    zhzer
        1
    zhzer  
       2018-10-19 20:45:53 +08:00
    tcp ftp 这些协议就是有状态的,天生就这么设计

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

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

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

    靠网络赚钱

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

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

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

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

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

    可以多点登陆,可以单独修改网站加密字符串,可以解绑等。
    loqixh
        20
    loqixh  
       2018-10-19 22:17:01 +08:00
    因为 http 设译用来做静态网页的, js 都是后面才有, 鬼知道后面会用来做这么多功能
    Leigg
        21
    Leigg  
       2018-10-19 22:17:40 +08:00 via iPhone
    你得先想想 http 是什么时候提出来的,每项技术都有出生背景和作用场景
    pinews
        22
    pinews  
    OP
       2018-10-19 22:19:44 +08:00
    @sagaxu 我说的身份证就好比你开公司要营业执照一样,在需要联系你时,能找到你。还有驾照只是一种证件,不是在所有地方都能用。
    pinews
        23
    pinews  
    OP
       2018-10-19 22:23:54 +08:00
    @loqixh 你错了认证服务早就有了,不过都是网站单方面要求的。
    pinews
        24
    pinews  
    OP
       2018-10-19 22:54:09 +08:00
    现在的域名服务一年也不到 100 元,那些提供密码服务的,一个月就要 20 元。而且既不能一键接入,也不能相互通知。
    azh7138m
        25
    azh7138m  
       2018-10-19 23:20:00 +08:00
    @pinews 如同 OAuth,我们总是需要一个唯一 id 来标识一个账户,是必须要有公司提供集中的验证服务,这个公司谁来做?
    MinQ
        26
    MinQ  
       2018-10-19 23:38:30 +08:00 via Android
    @pinews 美国社保账号了解一下?
    momocraft
        27
    momocraft  
       2018-10-19 23:40:01 +08:00
    我比古人聰明系列
    tsohgdivil
        28
    tsohgdivil  
       2018-10-19 23:44:43 +08:00 via iPhone   ❤️ 2
    出现了,计算机科学中的民间科学家(或者说民进工程师?
    iwtbauh
        29
    iwtbauh  
       2018-10-19 23:45:43 +08:00 via Android   ❤️ 1
    那么问题来了,HTTP 为什么是无状态的,HTTP 为什么不做成有状态的,HTTP 能不能做成有状态的,有没有不是 HTTP 却是有状态的?
    回答:因为无状态最合适。

    现在的 google chrome 开始保存密码了,还有其他保存密码的服务?早干嘛去了?
    回答:保存密码是浏览器的一项功能,和 HTTP 协议没有半毛钱关系

    早在 HTTP 之前,域名服务就出来了,为什么没有针对个人的 ID 验证协议,还有现在把加密服务带进了 HTTP,是不是歧视?后来引进各种措施是不是亡羊补牢。
    回答:因为验证个人 ID 不需要专门开发新协议。现在的 HTTP 协议在这里: https://tools.ietf.org/html/rfc7540,你告诉我哪里“把加密服务带进了 HTTP ”了,歧视了什么,引进了什么措施。
    wxsm
        30
    wxsm  
       2018-10-19 23:50:15 +08:00   ❤️ 2
    不知道是因为我的水平不够还是你的水平不够,我感觉你的话有点牛头不对马嘴。
    lolizeppelin
        31
    lolizeppelin  
       2018-10-20 01:54:27 +08:00 via Android
    HTTP 全名超文本协议 最初用来打开文本的

    对本地来说 打开文本 显示文本 关闭文本 (不影响显示)
    对 www 来说 过程一样 反馈到 tcp 上就是连接 取数据 关闭

    这个过程是一次性的 开几个页面就是多少个一次性行为 所以说没状态


    后面即使升级到了 http 1.1 这个原则也没变 在协议层面 一样是 打开后就关闭的 只是优化了 tcp 没真关连接而已


    为了让你下一次请求和上一次请求关联起来
    服务器和客户端都存一个可以互相匹配的玩意

    这样绕着实现了有状态

    至于周全 当然不周全 难道你想什么玩意一出来就周全的 还是说直接推翻了重做啊
    dobelee
        32
    dobelee  
       2018-10-20 03:09:28 +08:00 via Android
    这个明显事后诸葛亮了。
    t6attack
        33
    t6attack  
       2018-10-20 05:39:07 +08:00
    互联网的发展,是一个探索未知的过程,而不是规范已知的过程。
    这个过程充满了随机、巧合、独狼式的个人奋斗。

    举个例子,万维网早期,只能显示和传输文字。1992 年,两名大学生觉得网页能显示图片会更有意思。于是两个人在计算机前奋战了 6 个星期。1993 年初,第一个能够显示图片的浏览器诞生,引发了轰动。两人中的一位,也因此被誉为“ Internet 点火人”。

    在今天,你觉得浏览器能显示图片是理所当然。正是这些前人奋斗的结果。
    你站在计算机大厦的楼顶上,觉得一切都很简单、一切都理所当然。以上帝视角往下看,觉得这里不好、那里不对。但如果没有这栋大厦,你连向下看的机会都没有。
    t6attack
        34
    t6attack  
       2018-10-20 06:08:59 +08:00   ❤️ 1
    90 年代初的高配电脑是这样的。

    没有百度、没有谷歌、没有教程文章,他们面对的是一片“虚无”和“未知”。
    前辈们是用这样的配置,开创了一个伟大的互联网时代。
    ooh
        35
    ooh  
       2018-10-20 06:15:32 +08:00
    来来来,给你一枚铜币
    yimity
        36
    yimity  
       2018-10-20 07:59:50 +08:00 via Android
    人类一思考上帝就发笑。
    rashawn
        37
    rashawn  
       2018-10-20 08:47:57 +08:00 via iPhone
    这种问题根本没有原因 都是人决定的 可能做决定的人 他老婆每年都给老王生孩子 他很生气 来不及想其他问题了
    zh826256645
        38
    zh826256645  
       2018-10-20 09:07:21 +08:00
    @pinews 如果真的能做到你说的这样,或许地球已经被某个国家或者集团控制了.
    pythonee
        39
    pythonee  
       2018-10-20 09:09:25 +08:00 via iPhone
    无状态不是一般的优秀
    abcbuzhiming
        40
    abcbuzhiming  
       2018-10-20 09:13:44 +08:00
    美国没有身份证,但是人家驾照就相当于身份证
    clino
        41
    clino  
       2018-10-20 09:40:04 +08:00 via Android
    @pinews 不是麻烦,而是限制死了做法不灵活
    这部分应该由具体应用来定义,这样可以比较自由地发展
    vindurriel
        42
    vindurriel  
       2018-10-20 09:49:50 +08:00 via iPhone
    这其实是互联网身份认证的话题 可是您的问题有考古学的倾向 推荐看下这个 https://solid.inrupt.com/about solid 是互联网之父 Tim Bernes Lee 背书的新产品 其中有身份认证的解决方案
    Jex
        43
    Jex  
       2018-10-20 09:52:29 +08:00
    刚学习 HTTP 的程序员有这种想法很正常,但是很多人也解释不清楚这个问题,为什么 HTTP 协议不一开始就设计成有状态 /带认证的特性?其实并不是楼主所说的「是一种先天狭隘考虑不周的表现」,恰恰相反,HTTP 协议有些功能是过度设计、考虑太多的结果! HTTP 协议本身有身份验证功能,但因为缺乏可扩展性现在几乎没有网站使用:

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication


    类似的,IPv6 报头也有比 IPv4 报头简单的地方,你只看到了 IPv6 多出来的特性,却没看到删减去的特性。如果你在一开始就过度设计,添加太多使用频率很低的功能,那就会使协议过于复杂,更加缺乏可扩展性,更加不能适应时代的变化。基于 Cookie 的身份验证方法可以很好地适应各种网站各种不同的需求,而且用处也不仅仅是身份认证 ,你却没有看到它的优点。你应该再看看网络洋葱结构图,理解一下「软件设计的正交性」,让你来设计一个检查用户输入是否合法的框架,你是设计成 checkInput(userInput:String,validators:[UserInput -> Bool])?让 Validator 可以是传入一个可扩展的检查函数参数?还是设计成 checkInput(userInput:String,validators:[StringValidatorName]), 让 checkInput 方法内置一堆预定义的校验方法,只允许传入指定 Validator 的名称?
    iceheart
        44
    iceheart  
       2018-10-20 09:53:10 +08:00 via Android
    http 协议是干啥用的?
    zcore
        45
    zcore  
       2018-10-20 10:19:23 +08:00   ❤️ 1
    个人见解,轻喷:
    1、跟身份证没有关系。
    2、为什么一开始考虑不到,因为预知未来是很难的事,就好比你现在在抱怨过去的人考虑不周,给现在的人造成麻烦,那有没有考虑过你现在的所作所为,会为未来的人造成什么麻烦呢?大多数人不会考虑或考虑很少,因为未来的人不会穿越到现在,把你打一顿说:“你设计的什么玩意”!即使你刻意考虑未来需求,你也无能为力:
    2.1、未来可能性非常之多,即使后来证实你预测正确,也很难说是不是运气
    2.2、你必须首先考虑当下的需求,满足了当下的需求你设计的东西才不会被淘汰,如果为了预测的不知道靠不靠谱的未来需求,导致当下弊大于利,你的东西会迅速被淘汰,后面所有的预测都将会毫无意义。
    2.3、即使未来证明的你考虑的是合理的,想要让人们重拾你的设计,未来的人也必须考虑重要的一点——巨大的更换成本。ipv6 比 ipv4 先进早是板上钉钉的事,为什么 ipv6 推动这么慢?其中一个原因就是,把 ipv4 换成 ipv6 的更换成本要大于更换后的短期收益,只有随着时间的流逝,ipv4 越来越不中用,导致更换的短期收益水涨船高,或者新技术使更换成本骤降,越来越多的人才会行动起来。

    所以,我现在不妨假设,楼主穿越回 http 设计之初的年代,设计了有状态的 fuckhttp 协议,并声称:“未来的人一定会后悔选择无状态的 http !”但,有状态的 fuckhttp 比无状态的 http 慢,在哪个计算机性能底下的年代,用 http 的人看小黄片比用 fuckhttp 的人快了不止一星半点,fuckhttp 被无情淘汰,直到今天人们重新发现了 fuckhttp 的光辉,感慨楼主天妒英才。然而 fuckhttp 的推进依旧举步维艰,因为更换它需要重新设计基于 http 的一切上层建筑,巨大的更换成本与收益不成正比,没人厂家愿意牺牲自己让别人坐收渔利,何况 http 也有性价比更高的短期解决方案。
    究竟 fuckhttp 最后能不能把 http fuck 掉?天知道!
    pinews
        46
    pinews  
    OP
       2018-10-20 10:27:26 +08:00
    @MinQ
    @sagaxu
    @abcbuzhiming 一个说社保,两个说驾照 听谁的?

    @iwtbauh 如果无状态最合适,何必引入半吊子 cookie,保存密码当然和现在的 HTTP 没关系,但是能不能有关系?有关系了是不是更好?验证个人 ID 不需要新协议,按你的意思上网都用 IP,不要用域名系统,既然有域名系统为什么没有个人验证系统?还有我说的是 https 也是由网站短发起的,个人没有任何控制力,以上不是歧视是什么?
    @wxsm 你的高见?

    @lolizeppelin 革先天不足之命而已,邮件系统比万维网早多了,http2 也支持双向通讯了

    @azh7138m
    @zh826256645 现在才是被控制了呢,163 邮箱不绑定手机不让改密码,微信还需要 2 个好友验证,还有支付宝 googlefacebook,他们都是有自身业务的,提供账号互联不过是有机可乘。用户根本不能自主控制。
    iwtbauh
        47
    iwtbauh  
       2018-10-20 10:32:53 +08:00 via Android
    @pinews #46

    我的意思是你完全思考错方向了。因为你说的“还有现在把加密服务带进了 HTTP,是不是歧视?后来引进各种措施是不是亡羊补牢” 根本就是错误的。

    加密服务从来都没有被带进过 HTTP
    iwtbauh
        48
    iwtbauh  
       2018-10-20 10:35:06 +08:00 via Android
    @pinews #46

    然后,回答你为什么不能有关系。你这样设计会使软件过度复杂化,参考 OSI 为什么被 TCP/IP 打败。“七层 OSI 还不如七层玉米卷”。一个软件做一件事。
    pinews
        49
    pinews  
    OP
       2018-10-20 10:42:42 +08:00
    @vindurriel 感谢,可惜看不懂,不知能否介绍一二
    @Jex 感谢,我记得 HTT 是带验证的,你证明了我的推测,好多地方设计的也不错,为什么没人用呢,能不能改进
    @zcore 不想谈哲学和假设。

    就说说比 http 早的 email 协议吧,你注册账户后,就可以给别人,所有人发信息,别人,所有人也可以给你发信息,而现在的注册用户全由网站控制,网站不一样,账户无任何关联,现在的 Oauth 同样对用户是不透明的,应该由互联网上的独立的协议与 http 结合,而不是由某一些公司控制。
    pinews
        50
    pinews  
    OP
       2018-10-20 10:46:21 +08:00
    @iwtbauh 我都说了 https 了,不知道你自言自语什么,你要觉的我说的不对,可以用“逻辑”反驳,还有不要拿 TCPOSI 狐假虎威,不能说明两者的联系,相当于什么也没说。
    iwtbauh
        51
    iwtbauh  
       2018-10-20 10:53:59 +08:00 via Android
    @pinews #60

    然而 HTTPS 不是 HTTP。HTTPS 也并没有修改 HTTP 本身。使 HTTP 具有加密能力。这正是协议的优美之处所在,这鼓励代码重用,其他协议也可以基于 TLS 而不是重复发明轮子,如果你把 TLS 该做的塞进 HTTP 那才是 ugly 和 loser。我觉得你的相关课程应该重修,或者语文应该重修。

    两者最根本的联系是欧盟发明 OSI 是政治上害怕来自五角大楼的 TCP/IP。然而历史证明这是愚蠢的。我举此例就是要告诉你你这样设计会使软件过度复杂化,有问题么。
    imn1
        52
    imn1  
       2018-10-20 11:01:48 +08:00
    我娘生我的时候,都不知道现在的孙子上学也要查房产证
    哦,那时还没房产证这东西,应该叫「无状态生育」

    以你的思想水平,应该能想到 50 年后,电饭锅能做出认证每个人不同口味的饭来,不如你现在去创造这个协议
    我们的水平达不到这个境界
    D3EP
        53
    D3EP  
       2018-10-20 11:05:08 +08:00
    你怕不是想搞全球上网实名制?
    pinews
        54
    pinews  
    OP
       2018-10-20 11:08:51 +08:00
    @iwtbauh ftp 也用 DNS,http 在 URL 里用域名,是改变了还是没改变?按你说的,难道说我要推出 HTTP 支持个人用户认证系统协议 就是要改变 HTTP,那确实,我要弥补他的不足。你说语文,我看你是“指马为鹿”。

    你说的再高大上,复杂化不是你说了算。
    iwtbauh
        55
    iwtbauh  
       2018-10-20 11:12:40 +08:00 via Android   ❤️ 1
    @pinews #54

    你这楼就是在胡搅蛮缠了。DNS 和 FTP/HTTP 是独立的,DNS 改变 HTTP 协议了吗。任何基于 TCP/IP 的服务都可以使用 DNS。并不是把“域名解析”这个知识塞入了 HTTP 协议。

    lz 基础知识问题不少,各种错误不断,我建议 lz 还是需要补充一下基础知识再来
    pinews
        56
    pinews  
    OP
       2018-10-20 11:16:03 +08:00
    @D3EP 有些相似,但有本质的不同,你不用为那么多网站疲于奔命,相反,所有网站都听你个人的。
    @imn1 嘿嘿 不一样,怎么知道你这房产证是真的假的,房产证丢了怎么办,情况应该是这样的,房产证出现的时候接入身份证,学校需要房产证,接入身份证,学校需要你的房产证,向身份证请求,身份证通知你,你同意权限,学校看到了房产证。
    pinews
        57
    pinews  
    OP
       2018-10-20 11:34:35 +08:00
    @iwtbauh 回到起点,你用 http 请求 v2ex,v2ex 把内容返回给了你,为什么返回给了你,没给别人? http 真不知道谁是发起者?可是为什么做成无状态?网站不知道你是谁,所以网站强制启用了自己的会员系统,在你的电脑里留下一串串 cookie,本来你就是你,何必要网站标记,应该你留一些记录在服务器,然后还能完全掌控这一些记录,如果 http 把你当成是你还有这么多麻烦?对 HTTP 来说,强制你成了隐身人。
    Jex
        58
    Jex  
       2018-10-20 11:35:00 +08:00
    @pinews 我都解释到这份上了,你应该学会自己思考
    HeiXiaoBai
        59
    HeiXiaoBai  
       2018-10-20 11:37:02 +08:00
    看下来有点搞不懂楼主你想说啥……
    你是想说希望 HTTP 访问时是有带上每个人的唯一标识符的么?
    HeiXiaoBai
        60
    HeiXiaoBai  
       2018-10-20 11:41:05 +08:00
    @pinews #57 先不提其他,请教一下。如何把我的记录"留在服务器的磁盘上",而且我还能掌控?
    pinews
        61
    pinews  
    OP
       2018-10-20 11:43:35 +08:00
    @HeiXiaoBai 基本上这个意思,但怕有人误解,是因为你这个人存在,你是唯一的,才产生唯一标识符,你不是像犯人一样给你一个编号你才存在,这个唯一标识符和相应的网站 ID 都只有你才能控制,就像域名一样。
    iwtbauh
        62
    iwtbauh  
       2018-10-20 11:48:53 +08:00 via Android
    @pinews

    我一直没和你讨论无状态的问题,我主要给你指出了你的以下几点错误:
    1. 加密服务从来都没有被带进过 HTTP
    已经从这一点引发的
    2. 为什么 HTTPS 没有改变 HTTP,为什么需要把 TLS 单独出来而不是塞进 HTTP 里面
    3. DNS 与 TCP/IP 应用程序的关系

    无状态的原因其他人解释的很详细了,例如性能问题
    pinews
        63
    pinews  
    OP
       2018-10-20 11:49:22 +08:00
    @HeiXiaoBai 域名和邮箱邮件还是由服务器控制呢,你说你怎么掌控,当然是协议,任何联系方式都不存在服务器上,都必须服务器发送请求你的系统,由你的系统发出。
    HeiXiaoBai
        64
    HeiXiaoBai  
       2018-10-20 11:54:35 +08:00 via Android
    @pinews # 63
    嗯,我赞同楼上大家的意见,楼主确实需要多看书
    imn1
        65
    imn1  
       2018-10-20 11:57:05 +08:00   ❤️ 1
    @pinews #56
    我娘生我的时候,也没身份证这东西,看来我们革命先烈也比不上你,建国时就该想到身份证这东西

    协议跟真假有什么关系?协议不管劫持啊
    协议跟丢数据有什么关系?协议不管网线质量啊

    其实你说到点子上了,传输协议就管传输,管什么认证呢?
    http 是传输协议,不是认证协议,不能把传输和认证一体化

    更重要一点是,人类社会是需求推动的,发明创造不会先于需求诞生
    基于上一点,更深一步说,市场是适应广泛需求,并非单一个体的需求就能改变市场
    有些发明创造,先于市场出现数十年,是因为没有广泛需求,而不是没人想到

    你原帖所说的各种认证、密码保存,是产生在互联网个人服务上的,早期没有这些服务就无需认证
    我可以告诉你,早在 google 前十多二十年就有密码保存工具,为何你现在才知道,因为那时没这个广泛需求
    你是否觉得,地球上出现枪支的时候,就应该同时有个人枪械登记制度?

    不能从现状反推起源的合理性,这是本末倒置
    JamesMackerel
        66
    JamesMackerel  
       2018-10-20 11:58:56 +08:00 via iPhone
    第一次见到计算机民科,开眼受教了。
    imn1
        67
    imn1  
       2018-10-20 12:10:28 +08:00
    没用过 贺氏(现在连输入法都没这个词了) 14.4 的人,是不会理解网页放一张小图片就要流量警告的,更别提带上 cookie,4KB 的 cookies 要 30 秒才能传完呢,就这情况,还是 HTTP 协议诞生好多年后的状况呢
    MinQ
        68
    MinQ  
       2018-10-20 12:29:28 +08:00 via Android
    @pinews 在美国驾照是可以当身份证用的,上面有照片姓名年龄之类的信息,如果没有驾照需要申请成人身份证。而社会安全卡上的社保账号更接近于国内的身份证号,每个人一生只能有一个号码,社会安全卡在银行开户,缴税等地方需要用到
    noaccounthere
        69
    noaccounthere  
       2018-10-20 12:44:11 +08:00
    靠自己控制...厉害厉害, 用户名重复问题谁来解决? 给每个人分配一个 uuid? 哪个组织来分配?这不还是被控制了嘛
    pinews
        70
    pinews  
    OP
       2018-10-20 13:16:48 +08:00
    @imn1 感谢,一语惊醒梦中人,被某些人带偏的我终于被你带回来了,因为 HTTP 是无状态的,后来才把 COOKIE 赛了进去验证,这才是把传输和验证搞混了,这才是把简单的东西搞复杂了,如果 HTTP 本身就是有状态的,根本没这么多麻烦事。

    @MinQ
    用身份证打比喻是我巨大的失误,以至于后来出现各种 bug,我的本意是你在现实中是唯一存在的,其实不需要驾照,社保号,甚至身份证号的,你去小饭馆吃饭,也不用出示什么证件,也不用办理会员,因为你的存在本身证明了你,但是在网络上,我们全成了隐身人,上网站就需要注册会员,一些网站用你注册过的 email,qq,支付宝账号来证明你的存在就像你在现实中用驾照,社保号,身份证号来证明自己一样,除此之外你没法证明自己。换言之,网络里本来应该有一个东西代表你就是现实生活中的你一样,不止 HTTP,任何需要账号密码的地方都可以用这个东西代表你就是你,这个和网络实名或者身份证号不一样,他是用来代表真的就是你,你完全掌握这个东西,不再需要别人签发编号给你。互联网所有东西都应该通过这个代表你的东西连接,任何连个东西连接都要经过你的同意,而不是你在网站里填写了电话,他就能打你电话,填写了 email,他就给你发送 email,email,电话,qq,支付宝,微博,都有代表你的东西连接,而不是他们直接连接。

    @noaccounthere 就像和域名。
    clino
        71
    clino  
       2018-10-20 13:25:06 +08:00
    感觉楼主是对软件分层不理解,按楼主的想法,把带状态的 http 协议直接塞到新版 TCP 协议里岂不是更方便?为什么不在 TCP 里直接考虑到这些需求并直接支持而是要多这么些个上层协议呢?
    pinews
        72
    pinews  
    OP
       2018-10-20 13:30:40 +08:00
    @clino 有些话我还没说,不过你可以像域名系统,你上网还是输入 ip 地址上网吗? ipv4 40 多亿 ip,如果多一点,一个人就好多 ip,还真可以把一个常用 ip 当成自己。
    clino
        73
    clino  
       2018-10-20 14:05:14 +08:00
    @pinews 没理解你想说什么
    laike9m
        74
    laike9m  
       2018-10-20 14:11:52 +08:00 via Android
    你那个统一密码的设计,如果是强制的,会很可怕
    youxiachai
        75
    youxiachai  
       2018-10-20 14:23:13 +08:00
    老实说...http 协议本身为啥要管验证....
    而且..lz 明显也是搞混了..https..也算不上带认证了啊.....
    你的所有逻辑其实都是处于业务层....
    你做的你业务..为啥要在协议层就行修改呢?
    无论是 cookie 还是 session 都是一些业务逻辑的不错...跟协议本身本来就不应该挂钩

    老实说,,你应该专注的是业务逻辑...不要吧 http 引入进来....
    youxiachai
        76
    youxiachai  
       2018-10-20 14:25:47 +08:00
    至于,lz 你的想法....早就有公司在做了..例如 Okta 了解一下...
    本质上.lz 想说的是 IAM 服务系统吧...
    HeiXiaoBai
        77
    HeiXiaoBai  
       2018-10-20 14:28:49 +08:00
    @pinews 正是现在互联网上我们每个人都是隐身人,我们才能在一定程度上保留自己的隐私,而不是即使你无痕访问,服务器还是一瞬间就知道了你是谁,知道了你访问过他
    pinews
        78
    pinews  
    OP
       2018-10-20 14:59:32 +08:00
    @youxiachai http 协议本身为啥要管验证,是不应该要啊,但是现实就是大家在用 Cookie 来做验证啊,Cookie 正是 HTT 的一部分啊,你说验证属于业务层,现状当然是这样,但本来验证应该和传输是平行的关系的,由 HTTP 支持平行的验证协议。所有网站由统一的验证管理,不应该在 HTTP 之下用 Cookie 做业务逻辑,也不应该每个网站做一个业务逻辑。

    @laike9m
    @youxiachai
    @HeiXiaoBai 不是,现在是网站统一管理用户,你们也是这样想,我的意思是由个人来管理所有网站,主动权全在个人手里,而不是网站啊,就像 1password 来管理其他网站密码一样,当然了这是个比喻,因为 1password 是在现有的模式下运行的,而我是将其提高与 http 平行的协议层面来说的,就像域名系统一样。

    我之前的观点被一些人带偏了啊,请看我上面最新的总结。
    pinews
        79
    pinews  
    OP
       2018-10-20 15:17:02 +08:00
    @t6attack 这么老的图也有,暴露年龄了啊
    lscho
        80
    lscho  
       2018-10-20 16:03:25 +08:00 via Android
    看来楼主基础知识甚为缺乏。。。http 是基于 tcp 的,也就是说设计之初是可以有状态的,但是对于 http 的应用场景来说,有状态的设计几乎没有优点,缺点一大堆。正是因为这样,才设计为无状态。。。。可以思考一下,现在的 web 应用,除了登录状态需要保持,其他的哪里需要?为了这个可以随手就解决的问题(cookie),去修改协议,真的有必要吗?
    pinews
        81
    pinews  
    OP
       2018-10-20 16:50:02 +08:00
    @lscho 对啊注册登陆找回密码申诉盗号支付都是随手可以解决的小问题,网站才是老大,客户只是屁民。
    dacapoday
        82
    dacapoday  
       2018-10-20 18:28:33 +08:00
    看问题太片面,太拘泥于具体业务了。半瓶水晃荡
    lscho
        83
    lscho  
       2018-10-20 18:35:49 +08:00 via Android
    @pinews 所以说你基础知识甚为缺乏。。注册登录申诉盗号支付这都是业务问题,要么是程序不够稳健,要么是业务有问题。和协议没有半点关系
    wly19960911
        84
    wly19960911  
       2018-10-20 20:23:43 +08:00
    @pinews #78 服务行业敢说这样的话还真的不想要客户了?店大欺客系列?
    passerbytiny
        85
    passerbytiny  
       2018-10-22 09:26:06 +08:00
    我觉得这贴可以停了,跟这种抛开历史背景和技术谈理论的产品经理,完全没必要讨论。

    先普及一个名词:
    HTTP:HyperText Transfer Protocol 超文本传输协议
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1115 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 23:45 · PVG 07:45 · LAX 15:45 · JFK 18:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.