Firebase 可调用云函数 CORS 错误
Posted
技术标签:
【中文标题】Firebase 可调用云函数 CORS 错误【英文标题】:Firebase Callable Cloud Function CORS Error 【发布时间】:2020-07-07 12:41:54 【问题描述】:以下是调用云函数的客户端代码:
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 错误,但可调用的云函数应该自动处理这个问题:
CORS 政策已阻止从源“http://localhost:5000”获取...的访问权限:
编辑
我正在使用firebase serve --only hosting
在本地主机上进行测试。
Cloud Functions 使用 firebase deploy --only funtions
部署
我正在同一个站点上调用其他类似的没有该问题的 Cloud Functions。
【问题讨论】:
您使用的是 Firebase 本地模拟器吗?如果是这样,您能否编辑问题以详细说明该设置以及我们如何能够重现您的情况? 响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。您是否确认这是 200 OK 成功响应而不是 4xx 或 5xx 错误? @sideshowbarker 由于 CORS 问题,自Preflight response is not successful
以来没有任何响应
@DougStevenson 我正在使用firebase serve --only hosting
在本地主机上进行测试
【参考方案1】:
临时修复:
在云控制台功能页面中,选择一个功能以显示信息面板。在权限选项卡中,选择添加成员。在新成员字段中,键入 allUsers。在角色下拉列表中,选择云函数,然后选择云函数调用者,然后保存。
一个函数在第一次创建时具有受限权限实际上是有道理的,但是我已经习惯了默认权限的存在,所以它是一个错误(或新功能),绝对让我失望。当然这并不能解决根本问题,但希望它有所帮助。
【讨论】:
谢谢!我还在这里发现了一个警告firebase.google.com/docs/functions/manage-functions“警告:使用低于 7.7.0 版本的任何 Firebase CLI 部署的新 HTTP 和 HTTP 可调用函数默认是私有的,并在调用时抛出 HTTP 403 错误。要么明确地将这些函数公开,或在部署任何新功能之前更新您的 Firebase CLI。” 为了补充这个答案,这可以在cloud.google.com/functions/docs/securing/…上找到以上是关于Firebase 可调用云函数 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章
firebase - 从可调用云函数访问数据库时应用检查失败