Javascript 更改域时的Cookie迁移

Javascript 更改域时的Cookie迁移,javascript,cookies,Javascript,Cookies,最近我将我的网站移动到一个新域,我也想将用户cookie迁移到新域,这样他们就不必再次登录 经过一些研究,我发现有两种可能的方法: 首先在old-domain.com上登录用户,使用new-domain.com更新所有cookie,以便可以从new-domain.com访问cookie,然后将浏览器重定向到new-domain.com 或者,在new-domain.com上,我可以从old-domain.com注入一个iframe,让它向新网站写入cookies 我不确定这两个能否实现我在域之间

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

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

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

  • 或者,在new-domain.com上,我可以从old-domain.com注入一个iframe,让它向新网站写入cookies

  • 我不确定这两个能否实现我在域之间迁移cookie的目标。有没有一种建议的方法可以做到这一点,这样用户就不必再次登录即可使用新域?

    我认为类似于#2的方法可以奏效

    在新页面上,检查Cookie是否已设置。如果不是,则注入一个iframe,如:

    <iframe src="http://old-domain.com/getcookies.html" style="height: 0; width: 0;">
    
    
    
    getcookies.html
    将只包含获取cookies并用于将其发送到新页面的Javascript。新页面上的Javascript将接收消息,然后设置它接收的cookies

    这方面存在一些潜在问题:

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

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

  • 您必须处理从未在旧域上的用户
    getcookies.html
    应检测到未设置任何cookies,并发送回一条指示此情况的消息


  • 我建议您添加一个新的cookie
    migrated=yes
    ,可用于检测用户是否需要执行这些操作。

    #1不起作用,您不能为其他域设置cookie。我想您的意思是
    postMessage()
    ,而不是
    sendMessage()
    ,谢谢。更正了它并添加了答案的链接。