Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase可调用云函数CORS错误_Javascript_Node.js_Firebase_Cors_Google Cloud Functions - Fatal编程技术网

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 };
  }
}