【问题标题】:cross domain cooking handling when same app server serves both domains同一个应用服务器同时服务于两个域时的跨域烹饪处理
【发布时间】:2015-05-02 03:31:27
【问题描述】:

我了解实现跨域 cookie 的方法/技巧有很多,例如 iframe、重定向等。我相信当不同的应用服务器为每个域提供服务时,这些方法是必要的。

现在,如果两个域都由同一个应用服务器提供服务,是否有一种有效的最佳实践方法来处理这些 cookie?在这种情况下,应用服务器能否只跟踪来源并确定每个请求与哪些用户相关联,而不管请求的目标域是什么?

任何意见将不胜感激。

鲍勃

【问题讨论】:

  • 为什么要在多个域上使用相同的 cookie?
  • 我希望匿名用户能够访问这两个站点并在它们之间共享信息。因此,如果用户现在在站点 B 上,我需要我的应用服务器足够聪明,以了解用户是否已经从站点 A 获得了会话 cookie。

标签: cookies client cross-domain session-cookies server


【解决方案1】:

Cookie 是服务器知道谁在与它交谈的方式,因此将两个域放在同一台服务器上并没有真正的帮助。当请求进来时,您就有了源 IP:端口、用户代理、cookie,仅此而已。由于 NAT(多个用户,一个 IP)和移动(一个用户,多个 IP——从蜂窝移动到 wifi,反之亦然),IP 没有用处。用户代理也有类似的问题。 Cross-Domain Cookies 中讨论的答案仍然是最好的选择。

【讨论】:

  • 明白。但是应用服务器是否无法跟踪两个域的所有 cookie?毕竟它是同一台服务器发布两者。此外,我见过的主从解决方案在主服务器跟踪所有 cookie 的情况下几乎相同。
  • 当然,应用服务器可以存储cookie,但是不知道客户端不知道谁有什么cookie。将所有东西都放在一台服务器上并没有真正的区别。任何你可以用一台服务器做的事情,你都可以用多台服务器共享一个数据库来做。
【解决方案2】:

遗憾的是,仍然没有超级直接的方式来跨域共享用户数据。我发现 iframe 实现是最可重用的。

为此,我创建了一个 NPM 模块来简化跨域共享。它为您提供了一个函数来生成一个包含域白名单的 iframe,以及让您从任何列入白名单的域访问该 iframe 的获取/设置函数。

https://www.npmjs.com/package/cookie-toss

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 2016-07-20
    • 2021-10-17
    • 2017-01-17
    • 2017-05-19
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多