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

时间:2018-01-18 14:49:48

标签: c# internationalization umbraco multilingual

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

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

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

当用户从下拉列表中选择其他语言时,该站点会重定向到与该语言关联的域,该域将告知CMS切换语言。

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

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

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

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

但是我发现这些参数不整齐,而且我将来可能需要传递更多信息,而且这种情况会变得更长。

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

在具有multilingualwebsite.com/fr/样式域的hindsite中会排除此问题,但不希望客户想要他们的网站。

1 个答案:

答案 0 :(得分:1)

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

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

这样的事情:

  1. 用户点击新语言。
  2. 将AJAX请求发送到当前域,告诉服务器用户正在更改语言。
  3. 服务器将用户信息保存在内存中。
  4. 浏览器重定向到新的语言域。
  5. 服务器在新语言域验证用户。
  6. 服务器检查存储的用户信息,如果找到,则使用它。
  7. 如果每个语言域都是不同的应用程序,则服务器可以对新语言域进行HTTP调用,以告知用户即将到来。