如何允许我的应用在Firebase中发布另一个发布功能的云功能?

时间:2018-11-13 15:04:56

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

我正在尝试使用firebase函数的React应用,这里是我的代码:

handleDonate(key){
        const url = 'https://us-central1-bora-ajudar-73ebc.cloudfunctions.net/api/donate'
        const dados = {teste : 'oi'} 
        const options = {
            method: 'POST',
            headers: {'Access-Control-Allow-Origin' : '*'},
            data : dados,
            url
        }
        axios(options)
        .then(data=>{
            console.log(data)
        })
        .catch(err =>{
            console.log(err)
        })
    }

然后,我的index.js函数

app.use(cors({origin: true}));

admin.initializeApp()

const checkoutUrl = 'https://pagseguro.uol.com.br/v2/checkout/payment.html?code='

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))


app.get('/api', (req,res)=>{
    res.send('Server side')
})

app.post('/donate',(req,res)=>{
    request({
        uri: 'https://ws.pagseguro.uol.com.br/v2/checkout?',
        method: 'POST',
        form:{
            token: token,
            email: email,
            currency: 'BRL',
            itemId1: 'idCampanha',
            itemDescription1: 'Doação',
            itemQuantity1: '1',
            itemAmount1: '2.00'
        },
        headers:{
            'Content-Type': 'application/x-www-urlencode; charset=UTF8',
            'Access-Control-Allow-Origin': 'true'
        }
    })
    .then(data=>{
        parse(data, (err,json)=>{
            res.setHeader('Access-Control-Allow-Origin', 'true')
            res.send({
                url: checkoutUrl+json.checkout.code[0]
            })
        })
    })
    
})

当我运行它时,控制台显示此错误:

  

无法加载https://us-central1-bora-ajudar-73ebc.cloudfunctions.net/api/donate:所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ https://bora-ajudar-73ebc.firebaseapp.com”。响应的HTTP状态码为500。

我知道这与向我的函数发送POST以及我的函数发送另一个POST有关,但是我不知道到底是什么。

1 个答案:

答案 0 :(得分:0)

问题是Firebase不允许免费计划中的外部API请求。