【发布时间】: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在本地主机上进行测试
标签: javascript node.js firebase cors google-cloud-functions