多个站点之间的 HTTP session

标签 http session cross-domain

有没有办法以某种方式修改 HTTP 请求(添加 cookie、HTTP 请求参数或任何其他内容),以便在用户移动到位于不同的域?

最佳答案

如果您有不同的域,您可以使用子域,因为如果 cookie 域是 .bar.com,foo.bar.com 和 toto.bar.com 可以共享 cookie。

如果您不能使用子域,您可以尝试通过在第一个域上使用代理 来获取域或子域的工作配置。在 toto.bar.com 上使用代理 toto.com 的代理可以帮助您共享 .bar.com session cookie。如果这样做,请注意不要构建开放代理。这也意味着您的第一台服务器将获得 100% 的流量。

然后,如果以上都不适合,您将需要一个 SSO 解决方案,第三方共享身份验证数据。但是 SSO 仅用于共享标识部分,而不是 session 数据。

在 SSO 解决方案之前,有一个简单的解决方案,即具有相同的标识/身份验证后端(比如 openLDAP)。但这只会让你有一个统一的密码,不能共享连接/断开状态(这是SSO的工作)。

如果您可以在服务器端处理 session 数据共享,您将不得不处理 2 个站点上与同一个人关联的 2 个不同 session 的同步。这种与唯一标识符的关联是 SSO 为您提供的。这是一件复杂的事情。

现在真正重要的问题是您想在这两个站点之间共享哪些内容?如果是用户偏好,如颜色主题等,您可能会考虑在应用程序的 js 环境中为您提供一些用户设置的 CROS 或 JSONP 调用,您甚至可以进行一些 ajax 查询以将这些设置保存在每个应用程序,这是一种在 2 个应用程序之间共享公共(public)数据的方法,但不要将其用于安全数据。

关于多个站点之间的 HTTP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872317/

相关文章:

javascript - 尽管 header 正确,但 CORS Access-Control-Allow-Origin

javascript - 如何精准判断XHR离开客户端的时间?

c# - session 变量和母版页

python - Django session 竞争条件?

javascript - "Access-Control-Allow-Origin"访问API请求错误

iis - 在 IIS 下的 HTTPS 网站中允许来自外部网站的非 ssl 内容

Python 请求使用 keep-alive 加速

http - 从 WebResponse 响应流读取响应

git - 使用早期(?)结束底漆解析智能 http git-upload-request 响应

ruby-on-rails - 如何使用 Rails 控制台清除 session ?