Node.js firebase express云函数cors错误

Node.js firebase express云函数cors错误,node.js,firebase,express,google-cloud-functions,firebase-cloud-functions,Node.js,Firebase,Express,Google Cloud Functions,Firebase Cloud Functions,我一直在疯狂地尝试让这个firebase http函数与cors一起工作。基本上,我在本地为AdminSDK提供服务,以验证某个用户令牌是否具有admin声明。令牌作为url中的参数通过get请求发送。我目前收到一个404错误,请求的资源上存在“No‘Access Control Allow Origin’头”错误。我尝试过以不同的方式重新排列我的代码,包括firebase在文档中是如何做到这一点的,但最终得到的cors总是伴随着404或500错误 const functions = requi

我一直在疯狂地尝试让这个firebase http函数与cors一起工作。基本上,我在本地为AdminSDK提供服务,以验证某个用户令牌是否具有admin声明。令牌作为url中的参数通过get请求发送。我目前收到一个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)

尝试将响应更改为
res.set('Access-Control-Allow-Origin','*')。发送(true)
res.set('Access-Control-Allow-Origin','*')。发送(false)


我还认为
admin.initializeApp(functions.config().firebase)应紧跟在
const admin=require('firebase-admin')之后

我在CORS和firebase函数方面遇到了很多问题,无论是否使用Express。我所注意到的是,有时在函数部署之后,CORS错误会卷土重来,这并不奇怪,而且似乎是不可预测的。您的CORS实现可能没有任何问题

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


我意识到这不是一个很好的解决办法,但如果什么都不起作用,你真的感到压力和沮丧,这可能会有所帮助

您确定要将cors应用为函数中的express中间件和内联中间件吗?似乎您只需要其中一个。您是否尝试将
“Access Control Allow Origin”、“*”
添加到标题中?cors中间件是否已经为您这样做了?我收到了相同的错误,仍然没有解决我身上发生的meSame问题。删除和重新部署似乎可以解决这个恼人的问题。