Javascript TensorFlowJs&;使用tf.loadLayersModel的Google存储| CORS错误

Javascript TensorFlowJs&;使用tf.loadLayersModel的Google存储| CORS错误,javascript,google-cloud-storage,tensorflow.js,Javascript,Google Cloud Storage,Tensorflow.js,我使用TensorFlow创建了一个基本模型,并使用以下工具将模型转换为TensorFlowJs:tfjs.converters.save_keras_model(model'./jfk_ewr')并将转换后的模型保存在google存储桶中 当从以下链接加载带有“示例1”(“从HTTP服务器加载模型”)的模型时:我得到一个CORS错误 model = await tf.loadLayersModel('https://console.cloud.google.com/storage/browse

我使用TensorFlow创建了一个基本模型,并使用以下工具将模型转换为TensorFlowJs:
tfjs.converters.save_keras_model(model'./jfk_ewr')
并将转换后的模型保存在google存储桶中

当从以下链接加载带有“示例1”(“从HTTP服务器加载模型”)的模型时:我得到一个CORS错误

model = await tf.loadLayersModel('https://console.cloud.google.com/storage/browser/jfk/ewr/model.json');
错误:
CORS策略已阻止从源“null”在“”处获取的访问:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“无cors”,以在禁用cors的情况下获取资源。

浏览器强制执行同一来源策略,其中阻止对来自不同来源的资源的请求。在您的情况下,当尝试从未知来源获取存储在Google云存储中的模型时,将强制执行同源策略

因此,您可以正确配置CORS,也可以简单地将其禁用。在这种特定情况下,您可以配置Google云存储桶,以允许包含TensorFlow模型的存储桶与发出所述请求的HTTP服务器之间的资源请求

为了便于说明,假设我们想从服务器获取TensorFlow模型。在Google云存储文档中介绍了如何配置CORS[1]之后,我们首先创建一个.json文件,该文件包含所有必要的配置信息,这些信息与允许哪个来源执行CORS请求有关。在上面的示例中,它看起来像这样:


[
    {
      "origin": ["http://www.example.com"],
      "responseHeader": ["Content-Type"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]
在安装了云SDK的情况下,从命令行运行gsutil cors set cors.json gs://example bucket[2]将在您的bucket和服务器之间配置cors

  • [1]
  • [2]
  • [3]

浏览器强制执行同一来源策略,其中阻止对来自不同来源的资源的请求。在您的情况下,当尝试从未知来源获取存储在Google云存储中的模型时,将强制执行同源策略

因此,您可以正确配置CORS,也可以简单地将其禁用。在这种特定情况下,您可以配置Google云存储桶,以允许包含TensorFlow模型的存储桶与发出所述请求的HTTP服务器之间的资源请求

为了便于说明,假设我们想从服务器获取TensorFlow模型。在Google云存储文档中介绍了如何配置CORS[1]之后,我们首先创建一个.json文件,该文件包含所有必要的配置信息,这些信息与允许哪个来源执行CORS请求有关。在上面的示例中,它看起来像这样:


[
    {
      "origin": ["http://www.example.com"],
      "responseHeader": ["Content-Type"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]
在安装了云SDK的情况下,从命令行运行gsutil cors set cors.json gs://example bucket[2]将在您的bucket和服务器之间配置cors

  • [1]
  • [2]
  • [3]

太棒了!!!!对于那些使用Google Cloud Shell的用户,我为最简单的CORS设置添加了链接[3]!!!!对于那些使用Google Cloud Shell的用户,我添加了链接[3],以实现最简单的CORS设置