由于 Cross-Origin-Opener-Policy 错误,Google 登录无法在带有 Firebase 的 Next.js 中工作
P粉020085599
P粉020085599 2023-08-25 20:30:33
0
2
975
<p>我正在使用 Next.js 和 Firebase 开发 Web 应用程序。我已在应用程序中成功实现了 Google 登录,但遇到了导致登录过程无法按预期完成的问题。</p> <p>当我尝试登录时,会按预期显示一个弹出窗口。但是,在控制台中,我看到以下错误:</p> <pre class="brush:php;toolbar:false;">Cross-Origin-Opener-Policy policy would block the window.closed call.</pre> <p>由于此错误,登录过程无法完成,用户也无法正确登录。</p> <p>一些进一步的上下文:我正在本地主机上的开发环境中测试此功能。 <strong>此问题在 Chrome 上存在,但在 Firefox 上不存在。</strong></p> <p>此错误是否是由于 Cross-Origin-Opener-Policy 配置错误造成的?如果是这样,我如何在 Next.js 应用程序中为使用 Firebase 进行 Google 登录正确配置此政策?</p>
P粉020085599
P粉020085599

全部回复(2)
P粉616111038

是的,这可能与您的页面、登录页面的 COOP 配置以及它们的交互方式有关。 当两个页面没有相同的 COOP 时,它们最终会出现在单独的浏览上下文组中,这可能会阻止某些交互,例如 window.close 方法。

在没有看到您的代码和实现的情况下很难给出准确的解决方案,但是您可以尝试修改您的 COOP,使其与登录页面的 COOP 匹配。 这可以是same-originsame-origin-allow-popups

这些标头可以在 NextJS 配置中设置:https ://nextjs.org/docs/pages/api-reference/next-config-js/headers

就你的情况而言:

module.exports = {
  async headers() {
    return [
      {
        source: "/(.*)",
        headers: [
          {
            key: "Cross-Origin-Opener-Policy",
            value: "same-origin", // "same-origin-allow-popups"
          },
        ],
      },
    ];
  },
};
P粉616383625

这似乎是一个很长一段时间没有解决的问题。不过,请尝试以下操作

  1. 请检查范围 - https://stackoverflow.com/a/76574604/9640177
  2. 如果您使用 Google API,请确保您已在 Firebase 和 GCP 上设置正确的授权域名或 URI - https:// stackoverflow.com/a/76547658/9640177

您还可以参考跨域隔离指南 - https://web.dev /cross-origin-isolation-guide/MDN 文档,了解有关 Cross-Origin-Opener-Policy 的更多信息

如果您使用 Google API,请确保还添加带有端口的 URI,例如 localhost:3000。您可以查看我的实时网站 - https://radheshyamdas.com/ 我正在使用使用 Next 构建的 firebase auth .js

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板