【问题标题】: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, () => {

我看不到有人这样做,我想知道我是否/为什么真的需要这个,因为文档从来没有提到过类似的东西。 (函数会触发但永远不会发送响应)

从浏览器执行此函数链接效果很好。

【问题讨论】:

标签: javascript node.js firebase google-cloud-functions cors


【解决方案1】:

你所观察到的是预期的,documented。默认情况下,您无法从您加载的网页以外的域访问功能。这是所有浏览器都实现的安全功能。它可以防止恶意代码在其 Web 域的边界之外运行。这就是为什么CORS 是必要的 - 允许这些跨域请求显式发生。

【讨论】:

  • 谢谢道格。 “您无法从加载的网页以外的域访问功能” - 好吧,正如我所说,我正在从我在 Firebase 中注册的自己的域访问它,这就是为什么它仍然很奇怪CORS 阻止了我。
  • 浏览器对域所有权一无所知。它只是查看加载网页的域的名称,并将其与托管 API 的域进行比较。如果名称不完全匹配,则浏览器将拒绝该请求,您需要启用 CORS。
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 2021-08-10
  • 2020-09-02
  • 2021-12-17
  • 2023-03-29
  • 2020-03-07
  • 2020-01-09
  • 2020-07-25
相关资源
最近更新 更多