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

非 SSL 、没域名、跨站点、IE 浏览器如何做 Cookie 共享。

  •  
  •   jmyz0455 · 2019-11-13 10:37:49 +08:00 · 2741 次点击
    这是一个创建于 1838 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原本客户提出了一个需求,要在 ie11 浏览器上做跨站点的 token 共享。比如客户自己有四个网站,想要在其中一个网站上登录,其他三个网站也能登录。

    当时我参照淘宝天猫的模式写了一个 Demo,就是在页面里面加载同一个 iframe,然后通过 window.contentWindow.postMessage 给 iframe 发数据写到 cookie 里,然后打开其他三个网站后,新的网站也加载同一个 iframe,让 iframe 通过 window.parent.postMessage 把 cookie 返回来。

    Demo 放在外网环境,两个页面和 iframe src 都是通过 https 域名访问的,chrome 和 ie11 都没问题。

    当时我展示了这个 Demo,跟客户说是可行的。但是现在去到客户的现场,发现客户这个四个网站是放在内网里的,没有域名,通过 IP 加端口的链接去访问,没有配 ssl,直接就是 http://ip:port 这样的链接去访问。

    Demo 立马就跑不通了,ie11 没有任何反应,chrome 也报警告:“A cookie associated with a cross-site resource at http://dev-testboss.justgoai.com/ was set without the SameSite attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None and Secure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.”,因为没有配 http,想强行设置 SameSite=None 和 Secure 也没有效果。

    我确实没辙了,想问一下大家有没有别的办法。

    jingniao
        1
    jingniao  
       2019-11-13 12:52:00 +08:00 via Android
    oauth ?
    gam2046
        2
    gam2046  
       2019-11-13 13:26:35 +08:00
    内网的话,自己做私有的 dns,前置套 nginx 随便定义的域名跑。比如 a.dev / b.dev
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2387 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 16:02 · PVG 00:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.