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



我们遇到了一个公司客户的问题,他们无法通过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 DB查询编写一个全新的API?

这听起来像是束缚了你的手脚,你必须遵守你目前所拥有的,你可能会尝试一些棘手的代理技巧,但限制总是公司的,撞到其他墙可能会很麻烦,也会浪费时间,所以如果开发还不算太远,考虑将查询转移到后端并不是一个可怕的想法。

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

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

您可以通过查看文档来学习如何设置SDK

最新更新