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

What can I use on my multilingual website to store data between language switches?

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

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

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

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

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

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

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

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

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

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

在具有 multilingualwebsite.com/fr/ 样式域的后站中可以排除此问题,但客户不希望他们的网站出现这种情况。

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

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

像这样:

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

如果每个语言域都是不同的应用程序,则服务器可以向新的语言域发出 HTTP 调用以告知它用户即将到来。