javascript - Firebase 可调用云函数 CORS 错误

标签 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 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 错误,但一个可调用的云函数应该自动处理这个问题:

访问从 ... from origin ' http://localhost:5000 获取' 已被 CORS 策略阻止:

编辑

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

Cloud Functions 使用 firebase deploy --only funtions 进行部署

我在同一个站点上调用其他类似的 Cloud Functions,它们没有这个问题。

最佳答案

临时修复:

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

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

关于javascript - Firebase 可调用云函数 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60874766/

相关文章:

javascript - 正则表达式查找带有冒号和肤色的表情符号名称

javascript - 如何使用 C++ 通过 websocket 发送数据?

javascript - 2 个用于打开 URL 的下拉菜单

html - 如何使用 Express 和 Kraken.js 的 Makara 模块从 I18N 属性文件中设置 "pull out"样式的 HTML 标签?

javascript - 如何在字符串中将字符 'a' 替换为 'b',将 'b' 替换为 'a'?

ios - 如何使用 prepare for segue 传递 Firebase UID

javascript - 删除数组中字符后的部分字符串并删除重复的元素

node.js - 由于 WebSocket 的 Nodejs 中的密度导致的套接字异常

java - Firebase 数据库路径 : 1. 0 无效。Firebase 数据库路径不得包含 '.' 、 '#' 、 '$' 、 '[' 或 ']'

angularjs - Firebase 使用 Angular2 通过 Firebase 数据库(Firebase 存储)上传文件、图像