前端 Firebase 请求在通过公司代理加载的网站上被阻止

Front-end Firebase requests are blocked on website loaded over corporate proxy

我们 运行 遇到无法使用 Firebase 和 read/write 使用 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?

这听起来像是你的手被束缚了,你必须遵守你目前拥有的东西,你可能会尝试一些棘手的代理技巧,但限制将永远是公司的,运行进入其他墙壁可能是一个麻烦和浪费时间,所以考虑将查询移动到后端并不是一个糟糕的主意,如果开发不是太远的话。

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

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

您可以通过查看 documentation

了解如何设置 SDK