Firebase 可调用云函数 CORS 错误

Mik*_*ene 4 javascript node.js cors firebase google-cloud-functions

以下是调用云函数的客户端代码:

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;
            });
Run Code Online (Sandbox Code Playgroud)

云功能:

exports.generateShippingRate = functions.https.onCall(async (data, context) => {
const customer_address = data.address;

return generateShipmentObject(customer_address);
});
Run Code Online (Sandbox Code Playgroud)

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 };
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到标准 CORS 错误,但可调用的云函数应该自动处理此问题:

CORS 策略阻止了从源“ http://localhost:5000 ”在...处获取数据的访问:

编辑

我正在使用firebase serve --only hosting本地主机进行测试。

云功能部署为firebase deploy --only funtions

我在同一站点上调用其他类似的云功能,但没有这个问题。

Mik*_*ene 5

临时修复:

在云控制台功能页面中,选择一个功能以显示信息面板。在权限选项卡中,选择添加成员。在新成员字段中,输入 allUsers。在角色下拉列表中,选择云函数,然后选择云函数调用者,然后保存。

对于一个函数来说,在第一次创建时具有受限的权限实际上是有意义的,但是我已经习惯了存在的默认权限,所以这是一个绝对让我失望的错误(或新功能)。当然,这并不能解决根本问题,但希望它能有所帮助。