云存储桶的CORS配置未使用python进行设置。
即,
>>> policies = bucket.cors
>>> policies.append({'origin': '/foo', ...})
>>> policies[1]['maxAgeSeconds'] = 3600
>>> del policies[0]
>>> bucket.cors = policies
>>> bucket.update()
如果按照上述步骤进行了桶的CORS配置,则会给出一个空列表。
答案 0 :(得分:0)
bucket.cors
is a sequence mapping of each CORS policy。
由于您没有准确分享您更新CORS条目的方式,因此我假设您要传递要附加的多个键值对的字典。这会无声地失败,因为它与策略条目的预期模式不匹配。
相反,写一下
import os
os.environ.update(
{'GOOGLE_APPLICATION_CREDENTIALS': '<path-to-your-key-file>'}
)
import google.cloud.storage
storage_client = google.cloud.storage.Client()
bucket_name = '<your-bucket-name>'
bucket = storage_client.get_bucket(bucket_name)
policies = bucket.cors
policies.extend([
{'origin': ['http://hello-world.example']},
{'maxAgeSeconds': 3600}
])
bucket.cors = policies
bucket.update()
print(bucket.cors)
请注意,原始列表是接收CORS响应标头的原始列表,如Storage JSON API web document中所述。其他策略也必须使用正确的值类型传递。
您还可以选择以这种方式单独附加每个政策:
...
policies.append(
{'origin': ['http://hello-world.example']},
)
policies.append(
{'maxAgeSeconds': 3600}
)