为啥一个 Firebase 函数被 CORS 阻止了?
Posted
技术标签:
【中文标题】为啥一个 Firebase 函数被 CORS 阻止了?【英文标题】:Why a Firebase Function is blocked by CORS?为什么一个 Firebase 函数被 CORS 阻止了? 【发布时间】:2020-10-16 20:27:03 【问题描述】:从我自己的域访问 my Function
,该功能将起作用,但客户端收到一个错误,即它被 CORS 阻止。
exports.registerNewUser = functions.https.onRequest((request, response) =>
我称之为:
var url = "https://us-central1-xxxxxxxx.cloudfunctions.net/registerNewUser";
$.get(
url,
email : email, userid:userID,
function(data) ....
我前段时间问过这个问题,我发现用这个包装函数内容,解决了它:
cors(req, res, () =>
我看不到有人这样做,我想知道我是否/为什么真的需要这个,因为文档从来没有提到过类似的东西。 (函数会触发但永远不会发送响应)
从浏览器执行此函数链接效果很好。
【问题讨论】:
其实文档里有提到,见firebase.google.com/docs/functions/… 【参考方案1】:你所观察到的是预期的,documented。默认情况下,您无法从您加载的网页以外的域访问功能。这是所有浏览器都实现的安全功能。它可以防止恶意代码在其 Web 域的边界之外运行。这就是为什么CORS 是必要的 - 允许这些跨域请求显式发生。
【讨论】:
谢谢道格。 “您无法从加载的网页以外的域访问功能” - 好吧,正如我所说,我正在从我在 Firebase 中注册的自己的域访问它,这就是为什么它仍然很奇怪CORS 阻止了我。 浏览器对域所有权一无所知。它只是查看加载网页的域的名称,并将其与托管 API 的域进行比较。如果名称不完全匹配,则浏览器将拒绝该请求,您需要启用 CORS。以上是关于为啥一个 Firebase 函数被 CORS 阻止了?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase https onCall 功能被 cors 阻止