Javascript 在调用window.history.pushState()时更改域

Javascript 在调用window.history.pushState()时更改域,javascript,cross-domain-policy,Javascript,Cross Domain Policy,我有一个小的多语言网站,组织为同一个域的多个子域,每个子域都以该语言的ISO 639代码为前缀。还有一个通用的www.子域,它具有根据用户代理指定的语言处理重定向到适当语言子域的逻辑,以及处理遗留URL的逻辑。所有域都指向同一应用程序的同一实例,该应用程序运行在Windows上一些相对现代的IIS版本上(我记不清了,因为它是托管环境) 一切都很好,但我希望在用户从一种语言转换到另一种语言时实现更平滑的过渡。我对页面进行了设置,以便根据访问它们所使用的URL,检索完整的页面或仅检索相关的可翻译内容

我有一个小的多语言网站,组织为同一个域的多个子域,每个子域都以该语言的ISO 639代码为前缀。还有一个通用的
www.
子域,它具有根据用户代理指定的语言处理重定向到适当语言子域的逻辑,以及处理遗留URL的逻辑。所有域都指向同一应用程序的同一实例,该应用程序运行在Windows上一些相对现代的IIS版本上(我记不清了,因为它是托管环境)

一切都很好,但我希望在用户从一种语言转换到另一种语言时实现更平滑的过渡。我对页面进行了设置,以便根据访问它们所使用的URL,检索完整的页面或仅检索相关的可翻译内容,以便在标准请求中加载完整页面,但在需要不同语言的相同内容时,只能通过AJAX加载相关部分。然后,我将这些内容放在适当的页面位置,最后在新旧语言之间交叉淡入淡出

视觉效果很好,但我需要相应地更新浏览器的地址栏,这就是我遇到问题的地方,因为这似乎违反了
window.history.pushState()
的设计行为。我意识到,允许脚本以某种隐藏的方式愉快地更改用户的地址栏将是无数安全问题的根源,但如果应用程序中的所有子域都是字符串变量中的不同值,并且所有逻辑都实现为“无缝”的,则有点令人沮丧内容翻译,只是偶然发现了一些简单的东西,比如更改浏览器地址栏中显示的URL


有人能想出解决这个问题的办法吗?谢谢

这将违反相同的起源,不确定pushState是否关心CORS。另见。如果域不能解决这个问题,请考虑在SeStices存储中跟踪这些东西,重写HTML链接,然后重新填充下一个导航到另一个域的历史。否则,请转到使用路径,而不是subdomainHi@PaulS.,谢谢您的快速评论。我不确定我是否理解您的第一个建议(会话存储、重写链接等),请您进一步详细说明?非常感谢。