Angular Firebase的云函数-无法加载URL:No';访问控制允许原点';标题已存在

Angular Firebase的云函数-无法加载URL:No';访问控制允许原点';标题已存在,angular,firebase,google-cloud-functions,Angular,Firebase,Google Cloud Functions,我有一个angular 2应用程序,通过http请求调用Firebase。但是,每当我尝试运行该函数时,都会出现以下错误: XMLHttpRequest cannot load https://us-central1-<my-projectId>.cloudfunctions.net/getUserByEmail?email=user@email.com. No 'Access-Control-Allow-Origin' header is present on the reques

我有一个angular 2应用程序,通过http请求调用Firebase。但是,每当我尝试运行该函数时,都会出现以下错误:

XMLHttpRequest cannot load https://us-central1-<my-projectId>.cloudfunctions.net/getUserByEmail?email=user@email.com. 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…}
下面是我如何调用组件中的函数(假设HTTP请求成功发出):

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


提前谢谢

所以我在这里犯了几个关键错误

  • 在初始化Firebase应用程序之前,请确保需要
    cors
  • 确保参数运行
    cors()
    函数
  • 以下是更新后的
    index.js
    代码:

      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))
           })
        });
    
    这是的副本,尽管您可能不知道:)
    this.http.get('https://us-central1-rosebud-9b0ed.cloudfunctions.net/getUserByEmail', {
           search: "user@email.com"
         }).subscribe(data => {
           console.log('data', data);
         })
    
      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))
           })
        });