firebase - 前端 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 数据库查询编写一个全新的 API?
解决方案
听起来你的手被束缚了,你必须遵守你目前拥有的东西,也许你可以尝试一些棘手的代理技巧,但限制永远是公司的,遇到其他墙壁可能会很麻烦而且浪费时间,所以考虑如果开发不是太远,将查询移动到后端并不是一个糟糕的主意。
云功能基于 HTTP 请求工作,您可能会遇到同样的问题,因为来自前端的请求也可能需要身份验证以确保安全。
您始终可以考虑使用 Firebase Admin SDK 从后端处理相同的逻辑。Firebase Admin SDK 目前支持最新版本的 Node.js-Java-Python-Go-C#。如果您要将查询移植到 Node.js,那么您已经完成了大部分查询。
您可以通过查看文档了解如何设置 SDK
推荐阅读
- php - 如何在页面上查询 Woocommerce 订单
- python - python函数中的语法无效,用于根据另外两个条件创建新列
- reactjs - 如何在另一个组件中访问远程 redux 表单状态
- android - 房间数据库自定义功能
- java - Pivot Cloud Foundry 错误:“浏览器检测失败且系统属性 h2.browser 未设置”-Spring Boot 2
- .htaccess - .htaccess 允许使用参数 (?something) 对图像进行热链接
- gem5 - gem5 FS 模式以超级用户身份运行失败,并显示“IOError:找不到系统文件的路径”。
- php - 从当前工作目录获取路径而不是从根目录
- javascript - 来自子组件的 $ref 在父组件(vuejs)中始终未定义
- python - 匹配两个列表之间的元素,然后使用第三个列表上的匹配位置