以下是客户端代码 调用云函数:
var getShippingRate = firebase
.functions()
.httpsCallable("shippo-generateShippingRate");
getShippingRate({ address: shippo })
.then(function(result) {
// Read result of the Cloud Function.
console.log("THE SHIPPING RATES", result.data.shipment);
})
.catch(function(error) {
// Getting the Error details.
console.log("ERROR SHIPPING: ", error);
var code = error.code;
var message = error.message;
var details = error.details;
});
云功能:
exports.generateShippingRate = functions.https.onCall(async (data, context) => {
const customer_address = data.address;
return generateShipmentObject(customer_address);
});
generateshipmentObject
返回:shippo.shipment.create(
{
address_from: addressFrom,
address_to: addressTo,
parcels: [parcel],
async: true
},
(err, shipment) => {
// asynchronously called
if (err) {
return { error: err };
} else {
return { result: shipment };
}
}
我得到了标准的 CORS 错误,但一个可调用的云函数应该自动处理这个问题:
访问从 ... from origin ' http://localhost:5000 获取' 已被 CORS 策略阻止:
编辑
我正在使用
firebase serve --only hosting
在本地主机上测试。Cloud Functions 使用
firebase deploy --only funtions
进行部署我在同一个站点上调用其他类似的 Cloud Functions,它们没有这个问题。
最佳答案
临时修复:
在云控制台功能页面中,选择一个功能以显示信息面板。在权限选项卡中,选择添加成员。在新成员字段中,键入 allUsers。在 Angular 色下拉列表中,选择云函数,然后选择云函数调用者,然后保存。
实际上,函数在首次创建时具有受限权限是有道理的,但是我已经习惯了默认权限的存在,所以这是一个让我失望的错误(或新功能)。当然,这并不能解决根本问题,但希望它有所帮助。
关于javascript - Firebase 可调用云函数 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60874766/