Javascript Firebase可调用云函数CORS错误
以下是调用云函数的客户端代码:Javascript Firebase可调用云函数CORS错误,javascript,node.js,firebase,cors,google-cloud-functions,Javascript,Node.js,Firebase,Cors,Google Cloud Functions,以下是调用云函数的客户端代码: var getShippingRate = firebase .functions() .httpsCallable("shippo-generateShippingRate"); getShippingRate({ address: shippo }) .then(function(result) { // Read result of the
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;
});
云功能:
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;
});
generateshipmentObject返回以下内容:
我得到了标准的CORS错误,但可调用的云函数应该自动处理此错误:
在…获取的访问权限。。。“来源”已被CORS策略阻止:
编辑
我正在使用firebase仅服务主机在localhost上进行测试
云功能使用firebase仅部署功能进行部署
我正在同一个站点上调用其他类似的云函数,它们没有这个问题 温度修正:
在云控制台功能页面中,选择一个功能以显示信息面板。在“权限”选项卡中,选择“添加成员”。在“新成员”字段中,键入allUsers。在“角色”下拉列表中,选择“云函数”,然后选择“云函数调用器”,然后选择“保存”
实际上,函数在第一次创建时拥有受限权限是有道理的,但是我习惯了默认权限的存在,所以这是一个bug或新特性,肯定让我感到厌烦。当然,这并不能解决根本问题,但希望能有所帮助。Temp fix:
在云控制台功能页面中,选择一个功能以显示信息面板。在“权限”选项卡中,选择“添加成员”。在“新成员”字段中,键入allUsers。在“角色”下拉列表中,选择“云函数”,然后选择“云函数调用器”,然后选择“保存”
实际上,函数在第一次创建时拥有受限权限是有道理的,但是我习惯了默认权限的存在,所以这是一个bug或新特性,肯定让我感到厌烦。当然,这并不能解决根本问题,但希望能有所帮助。您使用的是Firebase本地仿真器吗?如果是这样的话,你能编辑这个问题来说明更多关于这个设置的信息吗?我们怎样才能重现你的情况?响应的HTTP状态码是什么?您可以使用浏览器devtools中的网络窗格进行检查。您是否确认这是一个200 OK的成功响应,而不是4xx或5xx错误?@sideshowbarker由于CORS,飞行前响应未成功,因此没有响应issue@DougStevenson我正在使用firebase仅提供服务的主机在LocalHost上进行测试您是否在使用firebase本地仿真器?如果是这样的话,你能编辑这个问题来说明更多关于这个设置的信息吗?我们怎样才能重现你的情况?响应的HTTP状态码是什么?您可以使用浏览器devtools中的网络窗格进行检查。您是否确认这是一个200 OK的成功响应,而不是4xx或5xx错误?@sideshowbarker由于CORS,飞行前响应未成功,因此没有响应issue@DougStevenson我正在使用firebase仅服务主机在LocalHost上进行测试谢谢!我在这里还发现了一个警告警告:任何低于7.7.0版本的Firebase CLI部署的新HTTP和HTTP可调用函数在默认情况下都是私有的,在调用时会抛出HTTP 403错误。请明确公开这些功能,或者在部署任何新功能之前更新Firebase CLI。为了补充此答案,请访问,谢谢!我在这里还发现了一个警告警告:任何低于7.7.0版本的Firebase CLI部署的新HTTP和HTTP可调用函数在默认情况下都是私有的,在调用时会抛出HTTP 403错误。明确公开这些函数,或者在部署任何新函数之前更新Firebase CLI。要补充此答案,请访问
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 };
}
}