firebase表示云功能cors错误

时间:2017-12-01 17:15:39

标签: node.js firebase express google-cloud-functions firebase-cloud-functions

我一直在努力让这个firebase http函数与cors一起工作。基本上,我在本地服务管理员sdk以验证某个用户令牌是否有管理员权限。令牌通过get请求作为url中的参数发送。我目前收到404错误,并且在请求的资源上出现“No'Access-Control-Allow-Origin'标头”错误。我已经尝试重新安排我的代码堆不同的方式,包括firebase如何在文档中执行它,但总是得到这些cors以及404或500错误。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors');
const express = require('express');
const corsOptions = {
                origin: '*',
                allowedHeaders: ['Content-Type', 'Authorization', 'Content-Length', 'X-Requested-With', 'Accept'],
                methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'],
                optionsSuccessStatus: 200 
    };
let app = express()
app.use(cors);

app.get('/AdminSignIn/:token',(req, res) => {
   cors(corsOptions,(req,res) =>{
       admin.auth.verifyIdToken(req.params.token).then((claims) => {
           console.log(claims.admin)
           if(claims.admin == true){
               res.send(true)
           }else{
               res.send(false)
           }
       })
   })
})

admin.initializeApp(functions.config().firebase);

exports.AdminSignIn = functions.https.onRequest(app)

2 个答案:

答案 0 :(得分:2)

无论有没有Express,我在CORS和firebase函数方面都有很多问题。我注意到的是有时在函数部署之后,CORS错误会重新出现,这并不理想,而且似乎不可预测。您的CORS实施可能没有任何问题。

我认为Firebase部署可能存在缓存问题?我可以通过删除函数然后重新部署来修复这些CORS错误。

我意识到这并不是解决方案的主要内容,但是如果没有任何效果,并且您真的感到压力和沮丧,这可能会有所帮助!

答案 1 :(得分:0)

尝试将您的回复更改为res.set('Access-Control-Allow-Origin', '*').send(true)res.set('Access-Control-Allow-Origin', '*').send(false)

另外我认为admin.initializeApp(functions.config().firebase);应该在const admin = require('firebase-admin');

之后