gpt4 book ai didi

angular - Cloud Functions for Firebase - 无法加载 URL : No 'Access-Control-Allow-Origin' header is present

转载 作者:太空狗 更新时间:2023-10-29 17:01:11 27 4
gpt4 key购买 nike

我有一个 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…}

这是我的 Cloud Function for Firebase index.js 文件:

   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: "user@email.com"
}).subscribe(data => {
console.log('data', data);
})

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

提前致谢!

最佳答案

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

  1. 确保在初始化 Firebase 应用之前需要 cors
  2. 确保参数符合 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))
})
});

关于angular - Cloud Functions for Firebase - 无法加载 URL : No 'Access-Control-Allow-Origin' header is present,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43244733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com