Firebase i18n 重写语言覆盖 cookie 被忽略

Firebase i18n rewrite language-override cookie is ignored

我使用标准 Angular 本地化包本地化了一个 Angular 应用程序。这很完美,我在 firebase 上托管了我的应用程序。我阅读了关于如何配置 i18n 重写的 firebase 文章,并在我的 firebase.json(https://firebase.google.com/docs/hosting/i18n-rewrites) 中实现了它。 法文版在 .../fr 时加载,俄文版在 .../ru 时加载,具体取决于用户浏览器的语言偏好,默认情况下 .../en 为英语。重写也按预期工作。

我还想让用户保存他们的偏好,这应该可以通过设置
document.cookie = "firebase-language-override=fr"

但是,似乎 cookie 被完全忽略了,firebase 仍然服务于用户的偏好。

有什么经验或建议我可以做些什么吗?还有其他方法可以更改 firebase 重写行为吗?

问题很可能与缓存控制有关。当客户端第一次加载页面时,它会缓存一个小时(默认情况下),即使您更改 cookie,请求相同的页面也会返回缓存结果(基于初始条件的结果 - 用户语言设置或 cookie 覆盖)。

您可以通过在开发工具“网络”选项卡中禁用缓存来对此进行测试。

要解决此问题,请尝试更新 firebase.json:

中默认路由的缓存控制
{
  "headers": [
      {
        "source": "/",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-store"
          }
        ]
      }
    ]
 }