javascript - 更改域时的 Cookie 迁移

标签 javascript cookies

最近我要将我的网站迁移到一个新域,我想将用户 cookie 也迁移到新域,这样他们就不必重新登录。

经过一些研究,我发现有两种可能的方法:

  1. 首先在 old-domain.com 上登陆用户,用 new-domain.com 更新所有 cookie,以便可以从 new-domain.com 访问它们,然后将浏览器重定向到 new-domain.com;

  2. 或者,在 new-domain.com 上,我可以从 old-domain.com 注入(inject)一个 iframe,让它向新网站写入 cookie...

我不确定这两个是否可以实现我在域之间迁移 cookie 的目标。是否有建议的方法,以便用户不必再次登录即可使用新域?

最佳答案

我认为像#2 这样的东西可以工作。

在新页面上,检查是否已设置 cookie。如果没有,请注入(inject)一个 iframe,例如:

<iframe src="http://old-domain.com/getcookies.html" style="height: 0; width: 0;">

getcookies.html 将仅包含获取 cookie 并使用 postMessage() 的 Javascript将它们发送到新页面。新页面上的 Javascript 将接收消息,然后设置它接收到的 cookie。

这有一些潜在的问题:

  1. 加载 iframe 并让它发送 cookie 是异步的。页面在等待时应该做什么?

  2. 如果您在服务器上使用 cookie,上面的代码不会设置它们,直到客户端从服务器接收到页面。服务器需要专门处理未迁移的用户,首先向他们发送复制 cookie 的脚本,然后将他们重定向回服务器脚本。

  3. 您必须处理从未在旧域中的用户。 getcookies.html 应该检测到没有设置任何 cookie,并发回一条消息表明这一点。

我建议你添加一个新的 cookie migrated=yes,它可以用来检测用户是否需要经历这些。

关于javascript - 更改域时的 Cookie 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915812/

相关文章:

javascript - 如何覆盖外部 html 模板 angular.js

javascript - PHP json_encode 函数不适用于 ajax 调用

javascript - 从 URLSearchParams 恢复数组时,Object.fromEntries 无法按预期工作?

javascript - 从 Node.Js 中的一系列回调函数返回结果

Jquery Cookie onclick 函数

PHP MySql 用户帐户绕过 cookie

cookies - Asp.net Core 2.0 Identity.TwoFactorRememberMe 过期

javascript - 带有 WP_Query 的 Ajax Post Filter 仅针对类别触发一次

java - 使用 WebObject 传递 session 信息

javascript - 阻止人们在多个选项卡上加载我的网站