Конфигурация CORS для хранилища Google Cloud не устанавливается с помощью клиента Python
Конфигурация CORS для хранилища облачных хранилищ не устанавливается с помощью Python.
Я выполняю шаги, указанные в: http://google-cloud-python.readthedocs.io/en/latest/storage/buckets.html
То есть,
>>> policies = bucket.cors
>>> policies.append({'origin': '/foo', ...})
>>> policies[1]['maxAgeSeconds'] = 3600
>>> del policies[0]
>>> bucket.cors = policies
>>> bucket.update()
Если я получаю конфигурацию CORS для корзины после выполнения вышеупомянутых шагов, это дает пустой список.
1 ответ
bucket.cors
является отображением последовательности каждой политики CORS.
Так как вы не рассказываете, как именно вы обновляете записи 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. Другие политики также должны быть переданы с правильным типом значения.
Вы также можете добавить каждую политику отдельно таким образом:
...
policies.append(
{'origin': ['http://hello-world.example']},
)
policies.append(
{'maxAgeSeconds': 3600}
)