Google 设置 CORS 配置时出现 Storage ArgumentException

Google Storage ArgumentException when setting CORS config

遵循 Google 文档,使用 GoogleCloud Storage 控制台时:

mysef@myproject:~$ cat cors-json-file.json 
[ 
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  } 
]

然后我得到以下错误:

myself@myproject:~$ gsutil cors set cors-json-file.json gs://mybucket
Setting CORS on gs://mybucket/...
ArgumentException: JSON CORS data could not be loaded from: [ 
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  } 
]

当我删除 "method"、"maxAgeSeconds" 或添加 "responseHeader".

时出现同样的错误

经过多次尝试,我最终将 json 文件修改为:

$ cat cors-json-file.json 
[{
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
}]

而且...它成功了! 请注意,Google 文档中的示例是我的第一个案例([{ 在 2 行上)

我遇到了同样的问题,这是由使用的引号类型引起的。通过在纯文本编辑器中打开 json 文件并将引号更改为标准引号解决了问题。

当我尝试使用 尾随逗号“,” 设置 CORS 设置 时,我遇到了同样的错误,如下所示:

[
    {
      "origin": ["http://localhost:8000"],
      "method": ["GET"],
      "responseHeader": ["Content-Type"],
      "maxAgeSeconds": 3600, 
    }                   // ↑ Trailing comma
]                          

所以,我删除了结尾的逗号“,”,如下所示,然后我可以成功设置CORS 设置,没有错误:

[
    {
      "origin": ["http://localhost:8000"],
      "method": ["GET"],
      "responseHeader": ["Content-Type"],
      "maxAgeSeconds": 3600 
    }                   // ↑ No trailing comma
]