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

cookie 不区分端口号!

  •  
  •   selfcreditgiving · 2021-10-22 12:57:27 +08:00 · 2104 次点击
    这是一个创建于 1119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不光不区分端口号, 还不区分协议。

    前情:

    今天把同样的 两个 web 服务( node express 做的,session 用 redis 保存)。

    一个部署在 云服务器上(宿主机),一个部署在这个服务器的 docker 容器里。 想要测试一下是不是真的因为在 docker 容器里的原因使性能变差了。

    问题产生:

    宿主机是 8080 端口, 容器的是 50080 端口, 当我访问了其中一个( A 服务器)的时候, 再去访问另一个( B 服务器)的时候,这个一定会跳回登录页面(说明没有登录)。 然后登录了 b 服务器, 又去访问 A 服务器,A 服务器又会被踢下来要登录。

    当时我还以为是 docker 隔离是不是不完全啊, 怎么两个完全不搭架的 两个服务器,会互相影响呢?

    结论:

    所以 cookie 不区分端口号 , 不管端口号 是 8080 还是 50080,cookie 都会发过去。 A 服务器的 redis 里只保留了 A 服务器的 session,访问 B 服务器 的时候,!!因为不区分端口号,A 服务器的 cookie 也会完全一样的发到 B 服务器 !! B 服务器在自己的 redis 上找不到这个 session,所以认为这个用户没有登录,把用户踢了下来。

    后来查到 cookie 连协议也是不分的, 不管是 http 还是 https 都是当作同一个服务器,都会把 cookie 发送过去。

    大家感兴趣的话可以看看这个回答: https://stackoverflow.com/questions/1612177/are-http-cookies-port-specific

    7 条回复    2021-10-25 14:10:23 +08:00
    selfcreditgiving
        1
    selfcreditgiving  
    OP
       2021-10-22 13:11:10 +08:00
    发现把 同样一个服务器, 域名换成 公网 ip 地址访问, 是不会发相同 cookie 的。

    例如: http://www.example.com:8080 和 http://1.2.3.4:50080 都是同一个服务器,只是把域名换成了 IP 地址。
    killerv
        2
    killerv  
       2021-10-22 13:30:27 +08:00   ❤️ 1
    Cookie 是同站策略,只要 eTLD+1 相同即可。
    selfcreditgiving
        3
    selfcreditgiving  
    OP
       2021-10-22 14:08:44 +08:00
    @killerv 赞,学习了
    deplivesb
        4
    deplivesb  
       2021-10-22 14:15:22 +08:00
    cookie 同站 都不知道?
    再打打基础
    2i2Re2PLMaDnghL
        5
    2i2Re2PLMaDnghL  
       2021-10-22 14:59:22 +08:00
    set-cookies 我记得可以要求强制 https 来着
    wwbfred
        6
    wwbfred  
       2021-10-22 22:48:11 +08:00
    我怎么记得 http 和 https 不通用的,之前两个协议还都在使用的时候要登录两遍……
    SmiteChow
        7
    SmiteChow  
       2021-10-25 14:10:23 +08:00
    是的,这也是远古各大门户为什么有那么多新闻、论坛、邮箱等等服务也只需要登录一次就可以,根本不需要什么 sso 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:18 · PVG 00:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.