【问题标题】:Firebase Callable Cloud Function CORS ErrorFirebase 可调用云函数 CORS 错误
【发布时间】: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


【解决方案1】:

临时修复:

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

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

【讨论】:

猜你喜欢
  • 2021-09-08
  • 2020-05-13
  • 2020-02-03
  • 2021-08-29
  • 2018-10-21
  • 2020-08-25
  • 2020-05-29
  • 2020-08-16
  • 2018-07-27
相关资源
最近更新 更多