【问题标题】:Front-end Firebase requests are blocked on website loaded over corporate proxy前端 Firebase 请求在通过公司代理加载的网站上被阻止
【发布时间】:2023-03-16 13:42:01
【问题描述】:

我们遇到了企业客户无法通过 Firebase 进行身份验证和通过 Firestore 读取/写入的问题,因为这些对 Google API 的请求是在我们的 Next.js 实例的前端写入的。

客户在他们的 JS 控制台中看到的错误:

Failed to load resource: net::ERR_TUNNEL_CONNECTION_FAILED

我想这是公司代理背后严格的同源策略,我们应该将所有 firebase/firestore 请求移到后端,在 Next.js 中的 /api 后面。

我们不能要求每个企业客户将*.googleapis.com 跨域请求列入白名单。

我对后续步骤的假设是否正确?如果是这样,当前在我们前端编写的大量 Firestore 查询将需要移动到后端,即:

await db
  .collection('users')
  .doc(user.email)
  .collection('starred')
  .doc(user.id)
  .set({ set: true });

是否已经有一个 API 库、云同源策略或云函数来简化这一切,然后为 Firestore 数据库查询编写一个全新的 API?

【问题讨论】:

    标签: firebase google-cloud-firestore next.js same-origin-policy vercel


    【解决方案1】:

    听起来你的手被束缚了,你必须遵守你目前拥有的东西,也许你可以尝试一些棘手的代理技巧,但限制总是存在于公司的,遇到其他墙壁可能会很麻烦,而且浪费时间,因此,如果开发不是太远,考虑将查询移至后端并不是一个糟糕的主意。

    云功能基于 HTTP 请求工作,您可能会遇到同样的问题,因为来自前端的请求也可能需要身份验证以确保安全。

    您始终可以考虑使用 Firebase Admin SDK 从后端处理相同的逻辑。 Firebase Admin SDK 目前支持最新版本的 Node.js-Java-Python-Go-C#。如果您要将查询移植到 Node.js,那么您已经完成了大部分查询。

    您可以通过查看documentation 了解如何设置 SDK

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2013-09-22
      • 2020-02-24
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多