代码之家  ›  专栏  ›  技术社区  ›  Ginger Squirrel

我可以在多语言网站上使用什么来存储语言切换之间的数据?

  •  1
  • Ginger Squirrel  · 技术社区  · 7 年前

    我目前正在Umbraco(C#/Razor MVC CMS)制作一个多语言网站。

    我有3种语言,都有自己的域名,但都指向同一个Umbraco安装。 例如:

    multilingualwebsite-fr.com
    multilingualwebsite-en.com
    multilingualwebsite-de.com
    

    当用户从下拉列表中选择不同的语言时,站点会重定向到与该语言相关的域,该域会告诉CMS切换该语言。

    我想在这些域之间传输有关用户的少量数据,即他们是否接受弹出窗口或关闭cookie栏。

    我曾研究过使用cookie和会话,但很明显,这些cookie和会话只在创建它们的同一个域上工作,因此无法在每个语言站点之间传输数据。因此,一旦切换了语言,我就无法读取cookie/会话数据。

    我在切换语言时为url添加了参数,因此url看起来像

    multilingualwebsite-fr.com?nopopup=true&cookieaccepted=true
    

    但我发现这些参数不整洁,很可能我将来需要传递更多的信息,这只会变得更长。

    有没有更好的方法可以将数据从一个域传输到另一个域,这是我没有想到的?

    后现场有 multilingualwebsite.com/fr/ 样式域会排除此问题,但这不是客户想要的网站。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Gabriel Luci    7 年前

    现代浏览器在跨域通信方面非常受限。您最好在服务器端做一些事情。

    如果所有域都指向同一个实际应用程序,那么当您知道用户将切换语言时,您可以在内存中存储一些内容。

    类似这样:

    1. 用户单击“新建语言”。
    2. 向当前域发送AJAX请求,告知服务器用户正在更改语言。
    3. 服务器将用户信息保存在内存中。
    4. 浏览器重定向到新的语言域。
    5. 服务器在新的语言域验证用户。
    6. 服务器检查存储的用户信息,如果找到,则使用它。

    如果每个语言域都是不同的应用程序,那么服务器可以对新的语言域进行HTTP调用,告诉它用户即将到来。