Firebase 的云功能 - 无法加载 URL:不存在“Access-Control-Allow-Origin”标头

2024-01-25

我有一个 Angular 2 应用程序,我通过 http 请求调用 Firebase。但是,每当我尝试运行该函数时,都会收到此错误:

XMLHttpRequest cannot load https://us-central1-<my-projectId>.cloudfunctions.net/[email protected] /cdn-cgi/l/email-protection. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 500.
    error_handler.js:54 EXCEPTION: Response with status: 0  for URL: null
    ErrorHandler.handleError @ error_handler.js:54
    next @ application_ref.js:348
    schedulerFn @ async.js:93
    SafeSubscriber.__tryOrUnsub @ Subscriber.js:234
    SafeSubscriber.next @ Subscriber.js:183
    Subscriber._next @ Subscriber.js:125
    Subscriber.next @ Subscriber.js:89
    Subject.next @ Subject.js:55
    EventEmitter.emit @ async.js:79
    NgZone.triggerError @ ng_zone.js:333
    onHandleError @ ng_zone.js:294
    ZoneDelegate.handleError @ zone.js:338
    Zone.runTask @ zone.js:169
    ZoneTask.invoke @ zone.js:420
    Subscriber.js:238 Uncaught Response {_body: ProgressEvent, status: 0, ok: false, statusText: "", headers: Headers…}

这是我的 Firebase 云功能index.js file:

   const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp(functions.config().firebase);
    const cors = require('cors')({origin: true});

    /**
     *  Function to get a user by email
     */
    exports.getUserByEmail = functions.https.onRequest((req, res) => {
      cors(request, response, () => {

// This should return a promise from the getUserByEmail function
response.status(200).send(admin.auth().getUserByEmail(req.query.email))
       })
    });

下面是我在组件中调用该函数的方式(假设 HTTP 请求成功发出):

this.http.get('https://us-central1-rosebud-9b0ed.cloudfunctions.net/getUserByEmail', {
       search: "[email protected] /cdn-cgi/l/email-protection"
     }).subscribe(data => {
       console.log('data', data);
     })

似乎无论我尝试什么,我都会遇到同样的问题。我什至尝试将其部署到我的 firebase 托管 URL,但它仍然给我这个错误。有人知道我在这里能做什么吗?

提前致谢!


所以我在这里犯了一些关键错误。

  1. 确保要求cors在初始化 Firebase 应用之前。
  2. 确保参数符合cors()功能。

这是更新的index.js code:

  const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    const cors = require('cors')({origin: true});
    admin.initializeApp(functions.config().firebase);


    /**
     *  Function to get a user by email
     */
    exports.getUserByEmail = functions.https.onRequest((request, response) => {
      cors(request, response, () => {

// This should return a promise from the getUserByEmail function
response.status(200).send(admin.auth().getUserByEmail(req.query.email))
       })
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 的云功能 - 无法加载 URL:不存在“Access-Control-Allow-Origin”标头 的相关文章

随机推荐