【发布时间】:2021-03-05 10:16:21
【问题描述】:
我正在实现一个云功能以从 BigQuery 获取结果。下面是我的函数/index.js 代码
const functions = require('firebase-functions');
const {BigQuery} = require('@google-cloud/bigquery');
const cors = require('cors')({origin: true});
exports.getBigQueryData = functions.region('europe-west3').https.onRequest((req,res) => {
cors(req,res,() => {
const bigquery = new BigQuery({
projectId: 'neon-opus-585',
keyFilename: 'service_account_bq.json'
});
const query = "SELECT * FROM `xxxx`";
bigquery.createQueryJob({query: query}).then((data) => {
const job = data[0];
return job.getQueryResults();
})
.then(results => {return res.send(results)})
.catch(error => {console.log(error)})
})
})
当我只部署/测试该功能时,一切运行正常,但是当我从我的应用程序内部使用它时,我收到以下错误
CORS 策略已阻止从源“http://localhost:5000”访问“https://xxxx.cloudfunctions.net/xxxx”获取:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
如您所见,我尝试导入 cors 包并在我的函数中实现它,正如这里的几篇帖子所建议的那样,但它仍然无法正常工作。
任何帮助将不胜感激:)
【问题讨论】:
标签: node.js firebase google-cloud-functions cors